首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android webview中禁用页面转发

问在Android webview中禁用页面转发
EN

Stack Overflow用户
提问于 2013-08-10 00:22:06
回答 3查看 10.8K关注 0票数 1

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-10 00:35:39

您正在寻找WebClient.shouldOverrideUrlLoading方法。

代码语言:javascript
复制
 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;
   }
 });
票数 5
EN

Stack Overflow用户

发布于 2014-12-02 13:09:26

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

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

​

代码语言:javascript
复制
	    @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没有被重定向。当我按下return按钮时,WebView再次出现,我可以继续观看视频。

但仍然存在一些问题。如果我多次重复打开浏览器并返回WebView,WebView可能无法阻止重定向到广告站点。它只是被重定向到广告站点。如果我幸运的话,我可以重复打开和返回100次。但有时当我重复几次时,它就失败了。我也不知道原因。

有没有人知道如何改进它?或者,有没有其他方法可以禁用广告重定向?

票数 0
EN

Stack Overflow用户

发布于 2018-05-23 14:57:18

您可以构建未检测到的webview build-id广告拦截器。

我知道现在回答这个问题为时已晚,但是,为了其他有同样问题的人。

好的,你可以建立webview build-id广告拦截器,如果你想阻止广告加载,并为用户提供流畅的体验,我有信心,因为我已经在5月份的应用程序中实现了它。

Idea

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

how to implement webview build-id adblocker

,您将%100%构建它,只要您按照逐步说明进行操作即可。

总结我们需要做的事情:

pgl.yoyo.org.

  • Save
  • 从某个地方获取ad主机名列表,在应用程序启动时加载。如果请求requests.
  • Check属于列表中的某个主机名,则使用
  • UseWebViewClient.shouldInterceptRequest(WebView, String)截取该URL并将其覆盖,返回一个虚拟资源而不是实际资源,该资源应为ads
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18151339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档