Android webview广告过滤的实现
来源:互联网 发布:vb 创建文件夹 编辑:程序博客网 时间:2024/05/17 02:03
WebViewClient的几个回调函数(本文章转自 某某某 )
要想对Webview实现一些高级操作,首先要学习WebViewClient的用法,这是Webview几个常用回调函数
- 1、public boolean shouldOverrideUrlLoading(WebView view, String url): 在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。
- 2、public void onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error):
重写此方法可以让webview处理https请求。 - 3、public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event):重写此方法才能够处理在浏览器中的按键事件。
- 4、 public void onLoadResource(WebView view, String url):在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。
- 5、 public void onPageStarted(WebView view, String url, Bitmap favicon) :在页面加载开始时调用。
- 6、public void onPageFinished(WebView view, String url) :在页面加载结束时调用。
初看上面的回调函数,极客人发现了一个巨大的坑,拦截广告就是拦截加载广告的js,上面的onLoadResource似乎是很合适的函数,只要判断onLoadResource的参数url是否是加载广告js的即可,如果不是广告相关的url正常加载,如果是则不加载。但是在使用onLoadResource之后才发现根本不行。
这里引用WebViewClient另外一个回调函数:public WebResourceResponse shouldInterceptRequest(WebView view, String url)
shouldInterceptRequest有两种重载。
- public WebResourceResponse shouldInterceptRequest (WebView view, String url)从API 11开始引入,API 21弃用
- public WebResourceResponse shouldInterceptRequest (WebView view, WebResourceRequest request)从API 21开始引入
这里极客人暂且使用shouldInterceptRequest (WebView view, String url)完成对webview广告的拦截。
拦截广告资源URL
在Webview加载资源时会回调shouldInterceptRequest函数,我们可以通过重写shouldInterceptRequest函数实现对webview的资源请求进行处理。进行处理后返回数据。如果主程序返回的数据为null,WebView会自行请求网络加载资源。这里有个坑:不是shouldInterceptRequest函数返回null就能屏蔽掉请求!正确的屏蔽请求的方式:
下面是极客人写的屏蔽广告的NoAdWebViewClient类: 只需使用webview.setWebViewClient(NoAdWebViewClient webclient)即可屏蔽指定webview的广告。
判断URL是否含广告的ADFilterTool类:该类通过判断url是否包含在广告拦截库中
ADFilterTool.java
广告url资源文件(广告拦截库可自行百度更新):AdUrlString.xml
所谓广告拦截库,实际上是请求广告资源的url合集,网络上有大量的广告拦截库,读者可以定期更新一下文件来实现对广告的高效过滤。本文屏蔽的方式比较粗暴,凡是含有广告资源的域名统统禁止。要想实现更精准的过滤,访友你可以使用通配符匹配url的方式进行拦截,现在PC端的浏览器正是这样做的。
- Android Webview广告过滤的实现
- Android webview广告过滤的实现
- webview过滤广告
- webview过滤广告终极招式
- Android WebView显示广告
- android webview 去掉广告
- Android循环广告的实现
- Android 广告条轮播的实现
- 浏览器过滤广告的问题
- 简单实现android的WebView
- paip.广告过滤系统 php 实现
- 广告过滤算法实现及优化
- android 简单的广告条实现
- Android实现不一样的广告轮播
- Android开发之轮播图广告的实现
- 【Android WebView】 利用webview实现浏览器的基本功能
- 最小风险贝叶斯决策在广告微博过滤的实现算法
- android分享途径过滤的实现方法
- C#winfrom中TextBox只可输入数字、整数
- [Android新手学习笔记18]-LinearLayou线性布局
- Lottie使用初体验
- Hibernate 映射枚举(Enum) 类型的属性
- Git用户手册
- Android webview广告过滤的实现
- Dom4j解析xml文件
- 剖析Disruptor:为什么会这么快?(三)揭秘内存屏障
- NumPy简明教程(二、数组1)
- python+ PIL 生成验证码图片
- 函数模板
- Json 数据解析
- Redis配置参数项说明
- Fiddler工具问题汇总