作者:裸身耍丶暧昧800 | 来源:互联网 | 2023-08-06 01:38
一:原理
WebView
有个setWebViewClient()
方法,new一个WebViewClient()
的匿名类,里面有两个待重写的方法。其中一个为每次访问前都会回调的方法,在这里面如果待访问的url里面和我们定义的广告url相同,就不访问该url,其余正常。
二:实现
webView.setWebViewClient(new WebViewClient() {private Map<String, Boolean> loadedUrls &#61; new HashMap<>();&#64;Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);return true;}&#64;Overridepublic WebResourceResponse shouldInterceptRequest(WebView view, String url) {url &#61; url.toLowerCase();if(url.contains("google.com") || url.contains("googleads.g")){return new WebResourceResponse(null,null,null);}else{return super.shouldInterceptRequest(view, url);}}});
三&#xff1a;效果图
未开启拦截策略前&#xff1a;
开启拦截策略后&#xff1a;
说明&#xff1a;这种拦截方式优点是上手快&#xff0c;逻辑简单&#xff0c;加载流量少&#xff0c;但前提是必须知晓有哪些广告公司的url。还有一种是过滤Javascript&#xff0c;这种方式比较繁杂&#xff0c;这里仅提一下。