android怎样对webview加载的内容进行拦截修改

本文介绍了如何在Android的WebView中拦截并修改加载的内容,以实现广告屏蔽或特定资源替换。通过抓包获取目标资源地址,然后在`shouldInterceptRequest`方法中进行拦截,用自定义的WebResourceResponse替换原有内容。示例中展示了如何替换百度首页的logo,以此说明该方法的实现过程。

需求原因,看结尾。


当然有好的方法可以交流交流大笑


大家知道网页上面挂的一般都是广告联盟的广告,一般就是大家看到的一张诱惑图片加跳转。所以拦截前我们要知道我们要过滤网站的那些内容。下面以百度首页为列。




我要把百度的logo进行拦截换掉。首先我们进行抓包,得到百度logo的图片地址。https://m.baidu.com/static/index/plus/plus_logo.png


接下来就行拦截替换,下面看核心代码。

webView.setWebViewClient(new WebViewClient(){
    @Override
    public void onLoadResource(WebView view, String url) {
        super.onLoadResource(view, url);
    }
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
        if(url.contains("plus_logo.png")){
            try {
                return new WebResourceResponse("image/png", "utf-8", mContext.getAssets().open("logo.png"));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return super.shouldInterceptRequest(view, url);
    }

onLoadResource是加载后的调用所以在这里拦截是没有用的,我们要在shouldInterceptRequest进行拦截。如果监听到百度准备加载logo的时候我们就行替换。

return new WebResourceResponse("image/png", "utf-8", mContext.getAssets().open("logo.png"));


需要的三个参数:new WebResourceResponse("mime类型","编码格式",输入流);

MIME类型根据你拦截的类型进行编写,具体谷歌。


好下面我们看效果。



是不是可以了,哈哈这个其实很简单,也没有什么用,主要是哪天我在看小电影的时候,尼玛广告烦死了,所以想到了这个把广告屏蔽了。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值