首先明白WebViewClient干啥的?
这货用于辅助WebView,处理各种通知、请求等事件

今天就是要重写她的方法!

这里主要交给javascript完成,那么javascript支持一定不能少!

WebSettings webSetting = webview.getSettings();
webSetting.setJavaScriptEnabled(true);

广告到底是啥?

明白了吧,就是一些div或者其他标签的块~~ 我们要把这些块去除 ~~

那么过滤广告的时机是何时?
页面加载完成的时候

 public void onPageFinished(WebView view, String url) {blockAds(view);//过滤}

blockAds首要的事情是view.getUrl(),通过url地址去匹配广告标签(Html标签属性)
关键就是构建javascript代码,懂web的都知道,Javascript中提供了访问文档标签的方法

        StringBuilder sb = new StringBuilder();sb.append("javascript: ");String[] alltag = tags.split(",");for (int i = 0; i < alltag.length; i++) {String adTag = alltag[i];if (adTag.trim().length() > 0) {adTag = adTag.trim();if (adTag.contains("#")) {adTag = adTag.substring(adTag.indexOf("#") + 1);if (Build.VERSION.SDK_INT <  Build.VERSION_CODES.KITKAT) {//19sb.append("document.getElementById(\'").append(adTag).append("\').innerHTML=\'\';");} else {sb.append("document.getElementById(\'").append(adTag).append("\').remove();");}} else if (adTag.contains(".")) {adTag = adTag.substring(adTag.indexOf(".") + 1);if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {sb.append("var esc=document.getElementsByClassName(\'").append(adTag).append("\');for (i in esc){esc[i].innerHTML=\'\';};");} else {sb.append("var esc=document.getElementsByClassName(\'").append(adTag).append("\');for (var i = esc.length - 1; i >= 0; i--){esc[i].remove();};");}} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {sb.append("var esc=document.getElementsByTagName(\'").append(adTag).append("\');for (i in esc){esc[i].innerHTML=\'\';};");} else {sb.append("var esc=document.getElementsByTagName(\'").append(adTag).append("\');for (var i = esc.length - 1; i >= 0; i--){esc[i].remove();};");}}}

历史大事件

Android从4.4起提供基于Chromium实现的WebView。此前WebView基于WebKit实现。WebKit提供网页解析、布局和绘制以及JS运行等基础功能。Chromium在WebKit基础上为WebView提供进程、线程和渲染等基础构架。(大概是因为Android部门负责人从Andy Rubin变成了Chrome部门的主管Sundar Pichai了(现任谷歌CEO)吧)。

webview过滤广告终极招式相关推荐

  1. webview过滤广告

    webview.getSettings().setUseWideViewPort(true);//web1就是你自己定义的窗口对象. webview.getSettings().setLoadWith ...

  2. URL欺骗的惯用招式(经典网络知识)

    URL欺骗的惯用招式(经典网络知识) 我叫URL,即"Uniform Resource Locators",意思是统一资源定位器.地址栏中的网址就属于我URL的一种表达方式.基本上 ...

  3. Android WebView显示广告

    参考文档: 1.http://wangbaiyuan.cn/realization-of-android-webview-advertising-filtering.html#prettyPhoto ...

  4. Netty基础招式——ChannelHandler的最佳实践

    本文是Netty系列第7篇 上一篇文章我们深入学习了Netty逻辑架构中的核心组件EventLoop和EventLoopGroup,掌握了Netty的线程模型,并且介绍了Netty4线程模型中的无锁串 ...

  5. 统计学习的三个招式:模型、策略和算法

    统计学习的三个招式:模型.策略和算法 https://mp.weixin.qq.com/s/12yhAZ79i_ENAdtyOX63lQ 李航老师在统计学习方法中讲到:方法=模型+策略+算法 可以说模 ...

  6. 避免需求分析与定义误区的7个招式:作为产品新人,我所遇到的坑(续)

    在需求分析和定义的过程中,作为产品新人的你也许和我一样陷入了误区之中,恨不得抽自己几个耳光?(参见前作需求分析与定义4大误区) 既然已经对可能的隐患有所了解,那么如何避免重蹈覆辙? 招式1:目标驱动, ...

  7. android设计招式之美,麦可网Android设计招式之美

    相关课程: 麦可网Android设计招式之美 麦可网Android高级应用开发 麦可网Android面向对象技术 本套课程目录: 1 – 设计模式与Android框架设计a 2 – 设计模式与Andr ...

  8. Windows开发的内功和招式

    Windows开发的内功和招式 最近一个月笔者休了大约两周的假期,期间没有学习新的开发技术,也没有去游山玩水,而是对自己的知识结构和Windows开发本身进行了一个深入的思考,收获颇多,在这里希望和大 ...

  9. 蒂法html5游戏,《最终幻想7:重制版》大量新截图:蒂法招式/支线任务

    史克威尔日前为<最终幻想7:重制版>公布了大量的新截图和艺设图,以及新情报. 请输入图片描述 首先是两名熟悉的角色赤红十三和宝条博士.之后还有一些预购特典召唤兽,陆行鸟.宝石兽.仙人掌等等 ...

最新文章

  1. 听说苹果M1能打英伟达RTX?那跑个光追试试
  2. 设计模式--简单工厂模式
  3. APM - 零侵入监控Service服务
  4. 使用一个环境的或者半径异样消除器来进行异样消除
  5. 解析OpenShift的存储规划
  6. 如何用WinCC发送报警消息至钉钉
  7. 设置屏幕横屏_android设置横屏和竖屏的两种方法
  8. 6、PXE安装ESXI6.0
  9. 信息安全期末复习整理
  10. 委外订单--采购入库单不能记账
  11. 如何保护眼睛,可采用语音方式获取外界知识,并积极锻炼身体做到劳逸结合。
  12. java怎么获得今天日期,java怎么获取两年后的今天的日期
  13. q_i7p_co/index_php rmvb_某返利网站admin目录index.php文件混淆加密算法分析
  14. gcs服务 oracle,gcs resource
  15. Verilog/@符号什么意思
  16. 移动App与服务器安全通信
  17. 用天然气做燃料极空气做氧化极的燃料电池
  18. 计算机技术在物理教学中的应用,信息技术在物理教学中的运用案例与感悟
  19. 上海居转户 计算机中级职称,上海居转户中级经济师申请条件
  20. 【seo】网页开发 代码优化 3

热门文章

  1. Long-Short Term Memory(长短时记忆模型)
  2. vue-cli(微信公众号)中网页转成canvas并保存为图进行长按分享
  3. 云计算需要考虑的安全技术
  4. Python 调用终端执行命令(gnome-terminal)
  5. Java实现获取前、后N天日期的函数分享2
  6. 广域网加速技术,企业广域网优化加速后有什么成效?
  7. 全网最详细的2-3树图解
  8. 超级Hook及CE基址加偏移读取游戏数据
  9. html5制作一个立方体,CSS3 3D transforms系列教程-立方体
  10. 数据结构第六讲: 树