在Android webview中禁用页面转发

时间:2013-08-09 16:22:06

标签: android redirect webview

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

3 个答案:

答案 0 :(得分:3)

您正在寻找WebClient.shouldOverrideUrlLoading方法。

 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;
   }
 });

答案 1 :(得分:1)

您可以构建未检测到的webview build-id adblocker

我知道回答这个问题为时已晚,为了那些有同样问题的人。

好吧,你可以构建webview build-id adblocker,如果你想阻止广告加载,并为用户提供流畅的体验,我很有信心,因为我已经在may app中实现了它。

理念

是否有所有可能的广告服务域名的黑名单,然后在webview加载资源时,您将阻止从黑名单域加载。所以这取决于黑名单中有多少个广告服务域名,幸运的是,有一个网站(pgl.yoyo.org/as/)为您提供了很长的广告服务名称,并在很多列表中列出flavoures。 您可以阅读this文章:

  

how to implement webview build-id adblocker

,只要按照分步说明操作,就会构建%100。

  

我们需要做的总结:

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

答案 2 :(得分:0)

我尝试使用shouldOverrideUrlLoading,但它没有用。看起来这个方法只在加载html时被调用一次。之后,单击一个链接,但不再调用该方法。

我也在制作一个嵌入Youtube播放器的WebView。我宁愿在浏览器中打开广告,而不是从WebView转发广告重定向。所以我重写onLoadResource方法:



	    @Override
	    public void onLoadResource(final WebView view, final String url) {
	    	if(url.indexOf("googleadservices.")>-1){
				view.getSettings().setJavaScriptEnabled(false);
		    	view.stopLoading();
		    	view.postDelayed(
		    			new Runnable(){
		    				@Override
		    				public void run(){
		    					Uri uri=Uri.parse(url);
		    					Intent i=new Intent(Intent.ACTION_VIEW,uri);
		    					i.setClassName("com.android.browser","com.android.browser.BrowserActivity");
		    					startActivity(i);
		    				}
		    			}
		    		   ,100
		        );
	    	}
    	}




有效。当我点击广告链接时,会打开一个新的浏览器,其中广告网站显示良好,并且未重定向WebView。当我按下返回按钮时,WebView再次显示,我可以继续观看视频。

但仍有问题。如果我重复打开浏览器并多次返回WebView,WebView可能无法阻止重定向到广告站点。它只是重定向到广告网站。如果我很幸运,我可以重复打开并返回100次。但有时当我重复几次时,它就失败了。我不知道为什么。

今天有没有人知道如何改进它?或者是否有其他方法可以停用广告重定向?