前言
查豆瓣 使用的是 WebView 加载页面,在豆瓣的移动页面中存在两到三个的广告轮播图,比较影响阅读体验。所以开始着手看看怎么屏蔽掉广告。
在 WebView 中有以下三个方法可以考虑:
fun onPageFinished(view: WebView, url: String)
fun shouldInterceptRequest(view: WebView, request: WebResourceRequest): WebResourceResponse?
fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean
复制代码onPageFinished方法会在页面加载完毕后回调
shouldInterceptRequest方法会通知 host Application,也就是启动 WebView 的应用返回WebResourceResponse。如果本地应用返回null,则webView会正常加载资源
shouldOverrideUrlLoading会在Url被加载前被回调。实现此方法,返回true时WebView将不会加载该Url,否则将会正常加载Url
此方法仅在主动或被动调用WebView.load(url)方法时才会回调,而页面中的资源加载时是不会被回调的
比如主动显式调用:webview.load(url)
被动则是页面中点击链接之后加载
此方法不适用于POST请求
基于上述三个方法,我们看看能否做到:
禁止加载广告域名
给广告域名请求返回空的数据
在页面加载完毕后消除广告占位的div或类似元素
1. 禁止加载广告域名