- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我即将在我的 Android 应用中推出 WebView AdBlocking。我想知道这是否会有效地阻止广告,或者是否还有更多我没有修改的 Webview 本身要做的事情。基本上我有一个存储在 Android Assets 中的主机文件,其中列出了数百个广告服务器站点。我将此文件读入我的 AdBlocker,然后将其应用到 WebViewClient 中,如下所示:
// AdBlocker.isAdURL(String url)
public Boolean isAdURL(String url){
Boolean retValue = false;
if ((url == null) || (url.isEmpty()))
return false;
if ((adServers == null)|| (adServers.size() <1))
return false;
try{
String domainName = getUrlsDomain(url);
if (adServers.contains(domainName)) {
retValue = true;
}
} catch(URISyntaxException e){
}
return retValue;
}
我只在 WebViewClient 中使用它,如下所示:
@Deprecated
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
if (adBlocker.isAdURL(url)) {
ByteArrayInputStream nada = new ByteArrayInputStream("".getBytes());
return new WebResourceResponse("text/plain", "utf-8", nada);
}
return super.shouldInterceptRequest(view, url);
}
类似地:
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (adBlocker.isAdURL(request.getUrl().toString())) {
ByteArrayInputStream nada = new ByteArrayInputStream("".getBytes());
return new WebResourceResponse("text/plain", "utf-8", nada);
}
}
return super.shouldInterceptRequest(view, request);
}
还有什么需要做的吗?或者就是这样?是否需要保留白名单,或者假设我的广告服务器列表是最新的,这通常会起作用吗?
最佳答案
此实现与"whitelist" feature in Cordova 基本相同.他们还使用 shouldInterceptRequest
来阻止对非白名单网站的请求。这种方法有已知的简写形式,例如它不会捕获通过 WebSockets 协议(protocol)完成的请求(请参阅 this book excerpt ),但通常它是 recommended approach (在该文档中查找 shouldInterceptRequest
)。
为了做得更好,您需要自己加载所有内容(使用一些 HTTP 客户端),过滤和清理内容,然后将结果传递给 WebView 以便呈现。例如,这就是 GMail Android 应用程序的工作方式(它们在服务器上进行实际清理,但也可以在设备上进行)。
关于android - 在 WebView 中完成 AdBlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35682986/
是否可以通过adblock在某个页面的元素上添加CSS规则? 像这样 #myElement { color: white !important; } 我试图找到一个脚本来在页面加载时更新此元素
我想知道是否有办法以编程方式跟踪或记录 Adblock Plus 阻止的网站。 Adblock Plus 仅显示被阻止网站的数量,但如果知道哪个网站被日志或跟踪 Adblock Plus 阻止,将非常
是否有一些用于阻止任何广告的 android 库? 如何阻止使用 javascript 注入(inject)? 当我编码时 webView1.getSettings().setJavaScriptEn
当我启用以下任一扩展时,我无法在 FireFox 中单击 LinkButton: AdBlock Plus 断开连接 知道为什么会发生这种情况以及我可以采取什么措施来解决它吗?我已尝试 Cause
我们有一个 html 页面,该页面使用的 javascript 库是 Choose.js 和 cgnotify,我们在其他页面中使用这两个库。没有任何内容被标记和命名为“ad”或任何包含“ad”的内容
我希望能够检测用户在访问我的网站时是否使用广告拦截软件。如果他们正在使用它,我想显示一条消息,要求他们关闭它以支持该项目,例如 this website确实如此。 如果您进入该网站并且您的浏览器启用了
我使用这个简单的代码来检测 adblock 是否处于事件状态 (function(){ var test = document.createElement('div'); test.innerH
我不能忍受听传统广播,因为我不能忍受听广告。 (电视也是如此,其中的广告比您想看的要响亮 200%。) 不幸的是,我的妻子需要在早上准备时听 radio 。 我在想,我们有插件来阻止我们的网络浏览器中
有没有办法在 flutter 的 WebView 中阻止广告?我正在构建允许用户浏览网页但需要阻止广告的应用程序。它基本上是一个自定义浏览器,但我需要摆脱广告。 最佳答案 navigationDele
我试图了解 adblock 如何隐藏元素。我只看到类似 -moz-binding: url("about:abp-elemhidehit?067696143543#dummy") !important
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
有没有办法在 Android WebView 中屏蔽广告?我正在构建可让用户浏览网页但需要屏蔽广告的应用程序。它基本上是一个自定义浏览器,但我需要摆脱广告。 我最好的选择是什么? 基于:https:/
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我希望这是可以在这里提出的问题: 我有一种情况,我的网站中的标签没有出现,但它应该在那里。这些图像不是广告,而是 Logo 和一些媒体图像。 最后,我发现是广告删除 (ADR) 导致我的图像没有出现。
我试图在通常显示 300x250 广告的地方显示背景图片,但只有在 adblock 屏蔽广告时才显示。任何人都知道如何做到这一点?使用 div 会导致背景在我不想要的广告加载之前显示。 谢谢 最佳答案
您好,我正在使用 uBlock Origin,它似乎阻止了我用于 div 的代码。我正在使用 GA 实验来根据用户的变化来更改 div 的样式。 if ($(window).width()
我对内容如何被阻止的简单示例感兴趣。 “https://adblockplus.org/en/filters”的文档非常少,并且如何使用“https://easylist-downloads.adbl
当用户在他的网站上激活任何类型的广告拦截器时,我想避免打开新标签的超链接。 目前我的根目录中有一个 myFile.js,内容如下: jQuery.adblock = false; 我有这个功能来检测广
Adblock 正在屏蔽我们学生节赞助商页面上的图片。我已经调查过 StackOverflow: How to stop AdBlock plus blocking images in HTML pa
为什么下面的 Adblock 过滤器集不阻止 The Weather Channel 上的“关闭您的广告拦截器”元素网站? 注意:要显示消息,请在启用广告拦截器的全新私有(private)、隐身或访客
我是一名优秀的程序员,十分优秀!