在Android webview中禁用页面转发

在Android webview中禁用页面转发,android,redirect,webview,Android,Redirect,Webview,我有一个显示广告(不是我的广告)的网络视图,问题是当用户点击“x”按钮退出广告时,广告仍然会将他们导向一个站点。我想知道的是,既然我不能控制广告,我可以在webview中禁用页面定向/转发吗?这意味着,即使用户单击我的webview中的链接,也不会发生任何事情。您正在寻找一种方法 你正在寻找一种方法 我尝试使用shouldOverrideUrlLoading,但没有成功。在加载html时,似乎只调用一次此方法。之后,单击一个链接,但不再调用该方法 我还制作了一个嵌入Youtube播放器的网络视图

我有一个显示广告(不是我的广告)的网络视图,问题是当用户点击“x”按钮退出广告时,广告仍然会将他们导向一个站点。我想知道的是,既然我不能控制广告,我可以在webview中禁用页面定向/转发吗?这意味着,即使用户单击我的webview中的链接,也不会发生任何事情。

您正在寻找一种方法

你正在寻找一种方法


我尝试使用shouldOverrideUrlLoading,但没有成功。在加载html时,似乎只调用一次此方法。之后,单击一个链接,但不再调用该方法

我还制作了一个嵌入Youtube播放器的网络视图。我更喜欢在浏览器中打开广告,而不是从WebView转发广告重定向。所以我重写了onLoadResource方法:

@覆盖
public void onLoadResource(最终WebView视图,最终字符串url){
if(url.indexOf(“谷歌服务”)>-1){
view.getSettings().setJavaScriptEnabled(false);
view.stopLoading();
view.postdayed(
新的Runnable(){
@凌驾
公开募捐{
Uri=Uri.parse(url);
意图i=新意图(Intent.ACTION\u视图,uri);
i、 setClassName(“com.android.browser”、“com.android.browser.BrowserActivity”);
星触觉(i);
}
}
,100
);
}

}
我尝试使用shouldOverrideUrlLoading,但没有成功。在加载html时,似乎只调用一次此方法。之后,单击一个链接,但不再调用该方法

我还制作了一个嵌入Youtube播放器的网络视图。我更喜欢在浏览器中打开广告,而不是从WebView转发广告重定向。所以我重写了onLoadResource方法:

@覆盖
public void onLoadResource(最终WebView视图,最终字符串url){
if(url.indexOf(“谷歌服务”)>-1){
view.getSettings().setJavaScriptEnabled(false);
view.stopLoading();
view.postdayed(
新的Runnable(){
@凌驾
公开募捐{
Uri=Uri.parse(url);
意图i=新意图(Intent.ACTION\u视图,uri);
i、 setClassName(“com.android.browser”、“com.android.browser.BrowserActivity”);
星触觉(i);
}
}
,100
);
}
}
您可以构建未检测到的webview构建id adblocker 我知道现在回答这个问题已经太迟了,但是,为了其他有同样问题的人

好吧,如果你希望阻止广告加载,并为用户提供流畅的体验,我相信你可以构建webview build id adblocker,因为我已经在5月份的应用程序中实现了它

想法

就是要有一个所有可能的广告服务域名的黑名单,然后当webview加载资源时,您将阻止从黑名单域加载。所以这取决于你在黑名单中有多少广告服务域名,幸运的是,有一个网站()为你提供了一个很长的广告服务域名列表,并以多种风格列出了它们。 您可以阅读以下文章:

,您将以%100的速度构建它,只要您遵循逐步的说明

总结我们需要做的事情:

  • 从pgl.yoyo.org获取广告主机名列表
  • 将列表保存到某个位置,在应用程序启动时加载它
  • 使用
    WebViewClient.shouldInterceptRequest(WebView,String)
    拦截 请求
  • 检查请求URL是否属于中的主机名之一 列表并重写它,返回一个虚拟资源,而不是 实际的一个,应该是广告
您可以构建未检测到的webview构建id adblocker 我知道现在回答这个问题已经太迟了,但是,为了其他有同样问题的人

好吧,如果你希望阻止广告加载,并为用户提供流畅的体验,我相信你可以构建webview build id adblocker,因为我已经在5月份的应用程序中实现了它

想法

就是要有一个所有可能的广告服务域名的黑名单,然后当webview加载资源时,您将阻止从黑名单域加载。所以这取决于你在黑名单中有多少广告服务域名,幸运的是,有一个网站()为你提供了一个很长的广告服务域名列表,并以多种风格列出了它们。 您可以阅读以下文章:

,您将以%100的速度构建它,只要您遵循逐步的说明

总结我们需要做的事情:

  • 从pgl.yoyo.org获取广告主机名列表
  • 将列表保存到某个位置,在应用程序启动时加载它
  • 使用
    WebViewClient.shouldInterceptRequest(WebView,String)
    拦截 请求
  • 检查请求URL是否属于中的主机名之一 列表并重写它,返回一个虚拟资源,而不是 实际的一个,应该是广告

谢谢,很快就会尝试。本地网页的android 4.4上不会调用method。谢谢,很快就会尝试。本地网页的android 4.4上不会调用method
 webview.setWebViewClient(new WebViewClient() {
   public boolean shouldOverrideUrlLoading (WebView view, String url){
       //True if the host application wants to leave the current WebView and handle the url itself, otherwise return false.
       return true;
   }
 });