2012-03-17 7 views
2

私はこれについて多くを検索しましたが、回答が見つかりませんでした。私は、ある時点であなたにウェブページを表示するwebviewが表示されるアンドロイドアプリを開発しています。しかし、私は本当にポルノコンテンツを表示するWebビュー上の小さな広告を心配しています。ウェブページの読み込みをブロックする方法はありますか?すべてのリソースはonLoadingRecource()メソッドを渡します...これは私が解決策を見つけることができる場所ですか?私は本当に助けが必要です。ありがとうございました。特定のリソースをwebviewで読み込むのをブロックする方法

答えて

-3

このメソッドには2つのパラメータがあり、Webviewでオーバーライドし、避けたいドメインから始まるURLを破棄します。

+0

本当に申し訳ありませんが、小さなスニペットで説明してください。これは役に立っているでしょう –

+0

どのように破棄? onLoadingRecourceでは何も破棄できません。 –

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

これはあなたに役立つと思います。

+0

しかし、そのリソースをロードしたくない場合は、URLを接続(ロード)しないようにするには、onLoadResourceを使用して –

+0

を停止し、superを呼び出すのをやめてください。私は確信していませんが、試してみてください。 – Pavandroid

+0

スーパーを呼び出すことはできません。 –

4

API11以降、WebViewClient.shouldInterceptRequestがあります。埋め込みオブジェクト(画像など)の読み込みをキャッチして、独自の画像で置き換えることができます。たとえば :

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

あなたは何に置き換えたいものを自分で検出する必要があります。

オンAPI < 11これを達成するのはもっと複雑なことがあります(私はまだ分かりません)。

2

WebViewにJavaScriptを注入することで、任意の要素をページから削除できます。以下は、idを持つ要素を削除するためにJavaScrptをWebViewに挿入する方法の例です。

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); " + 
        "})()");   
} 
関連する問題