如何阻止特定资源在webview中加载

时间:2012-03-17 05:16:24

标签: android webkit webview

我为此搜索了很多,但没有找到任何答案。我正在开发一个Android应用程序,在某些时候,会显示一个webview,显示一个网页。但我真的很担心网络视图上的一个小广告,显示色情内容。有什么办法可以阻止加载到网页上吗?每个资源都通过onLoadingRecource()方法......这是我可以找到解决方案的地方吗?我真的需要帮助。谢谢。

4 个答案:

答案 0 :(得分:4)

从API 11开始,有WebViewClient.shouldInterceptRequest,您可以在这里捕获嵌入对象(图像等)的加载并将其替换为您自己的图像。 例如:

WebResourceResponse wr = new WebResourceResponse("", "", new FileInputStream("/sdcard/aaa.jpg"));
return wr;

你必须检测自己想要用什么代替。

在API< 11上实现这一点可能会更复杂(我还不知道如何)。

答案 1 :(得分:2)

您可以通过将JavaScript注入WebView来从页面中删除任何元素。下面是如何将JavaScrpt注入WebView以删除具有其id:

的元素的示例
public void onLoadResource(WebView view, String url) {
        super.onLoadResource(view, url);

         // Removes element which id = 'mastHead'
         view.loadUrl("javascript:(function() { " +  
                    "(elem = document.getElementById('mastHead')).parentNode.removeChild(elem); " +  
                    "})()");         
}

答案 2 :(得分:-2)

您可以使用以下代码检查是否加载它。其中webview是WebView的对象。

webview.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                // TODO Auto-generated method stub
                super.onPageStarted(view, url, favicon);
                Toast.makeText(activity,"onPageStarted url :"+url, Toast.LENGTH_LONG).show();
            }
            @Override
                public void onLoadResource(WebView view, String url) {
                    // TODO Auto-generated method stub
                    super.onLoadResource(view, url);
                    Toast.makeText(activity,"Connecting url :"+url, Toast.LENGTH_LONG).show();
                }
          public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
          }
        });

我认为这会对你有帮助。

答案 3 :(得分:-3)

该方法有2个参数,在您的网页浏览中覆盖它,并丢弃从您想要避免的域开始的网址。