android - 使用 shouldInterceptRequest 阻止数据加载

标签 android webview android-webview

虽然这个问题已被问过多次,但真正与我的问题相关的唯一问题是这个 ( Can I use shouldInterceptRequest to block a particular call in Android? ),但它在 3 年多前被问过,最终没有得到任何答复。

我要阻止的请求是 POST 请求,因此 shouldOverrideUrlLoading 方法无法拦截它。

单击按钮后,webview 加载包含以下字符串的 URL:“androidBundleId_********”。

我需要阻止此请求并将用户重定向到 Play 商店(但我知道该怎么做!)

问题是 shouldInterceptRequest 方法的返回类型是 WebResourceResponse (哦,我多么希望它是 bool 值!)。因此,我必须至少返回一个空白的 WebResourceResponse。

我不想这样做,因为 WebResourceResponse 中的所有内容都会加载到我的应用程序中。我只希望 webview 拦截请求并阻止它

应用程序应始终显示相同的网页,不应加载任何数据,Play 商店 intent 除外。

我只发布我的代码的相关部分。

@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
    if(url.contains("androidBundleId_")){
        String bundleID = url.substring(url.indexOf("androidBundleId_")+"androidBundleId".length()+1, url.length());
        try {
            getContext().startActivity(new Intent
                    (Intent.ACTION_VIEW, Uri.parse("market://details?id=" + bundleID)));
        } catch (android.content.ActivityNotFoundException anfe) {
            getContext().startActivity(new Intent
                    (Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + bundleID)));
        }

        // I'D LIKE TO RETURN NOTHING HERE !!!
    }
    return super.shouldInterceptRequest(view, url);
}

我知道这个签名已被弃用,但我正在使用 minSdk 16 构建一个应用程序,因此我只能使用这个而不是接受请求作为第二个参数的那个。

你有什么解决办法吗?请注意,我无法更改包含该按钮的网页。

最佳答案

由于没有机会做我一直要求的事情,我们更改了整个应用程序逻辑并最终切换到 WebChromeClient。它自动处理链接/Intent

关于android - 使用 shouldInterceptRequest 阻止数据加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42387313/

相关文章:

android - 如何优雅地关闭辅助 Activity ?

javascript - 通过 javascript 对网页所做的更改未出现在 WebView 中。有没有办法强制 WebView 重绘其内容?

android - 如何在 Android 应用程序中显示外部 html/网页?

android - Android WebView 上具有自签名证书的服务 worker

android - 如何更改搜索栏中拇指的颜色?

java - 更改以前的 ListView 中的 ListView 项目

android - 如何在 Android 中使用 SharedPreferences 来存储、获取和编辑值

webview - 使用 React Native 渲染位于设备上的网页

java - Android 应用程序开发 - 启动第二个 Activity 后应用程序崩溃

android - 在浏览器中单击 URL 时如何打开 android 应用程序