温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

安卓webview怎么拦截

发布时间:2026-10-10 23:21:17 来源:亿速云 阅读:106 作者:小樊 栏目:移动开发

在 Android WebView 里“拦截”通常分几种场景,下面按常见需求给你说明怎么实现。


一、拦截 URL 请求(最常用)

1. 拦截页面跳转 / 链接点击

重写 WebViewClient.shouldOverrideUrlLoading

webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.contains("block.com")) {
            // 拦截,不加载
            return true;
        }
        // 继续加载
        return false;
    }
});

✅ 适用:

  • 拦截特定域名
  • 拦截 scheme(如 myapp://)
  • 控制是否跳转

二、拦截资源请求(图片 / JS / CSS / XHR)

2. 拦截所有网络请求(API 21+)

使用 shouldInterceptRequest

webView.setWebViewClient(new WebViewClient() {
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
        String url = request.getUrl().toString();
        if (url.contains("ad.com")) {
            // 返回空响应,拦截
            return new WebResourceResponse("text/plain", "utf-8", null);
        }
        return super.shouldInterceptRequest(view, request);
    }
});

✅ 适用:

  • 屏蔽广告
  • 修改请求
  • 本地资源替换

⚠ 注意:

  • 不能修改请求头
  • 主文档(HTML)也能拦截

三、拦截 JavaScript 调用

3. 拦截 JS 调用 Native

通过 addJavascriptInterface

webView.addJavascriptInterface(new Object() {
    @JavascriptInterface
    public void intercept(String data) {
        // JS 调用了这个方法
    }
}, "nativeObj");

JS 中:

window.nativeObj.intercept("hello");

✅ 适用:

  • JS 行为拦截
  • 与原生通信

四、拦截返回键(Android 层)

@Override
public void onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();
    }
}

五、常见拦截场景总结

需求 方法
拦截跳转 shouldOverrideUrlLoading
拦截资源 shouldInterceptRequest
拦截 JS JavascriptInterface
拦截返回 onBackPressed

如果你说的是 某个具体场景(比如微信 WebView、Hybrid、广告拦截、JSBridge、Android 15 新限制),可以告诉我,我给你更精确方案。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手