2012-12-07 66 views
9

カスタムリンク(app:// actionなど)でページを読み込むWebViewがあります。マニフェストファイルにURLスキームを登録しました。リンクをクリックすると、アクティビティのonResume()メソッドが正しいデータで呼び出され、正常に動作します。WebView(アンドロイド)でURLの読み込みをインターセプトする方法は?

私の問題は、WebViewがまだリンクを読み込もうとしていて、WebViewが「Webページが利用できません」というメッセージが表示されることです。私はそれを望んでいない。

WebViewでURLがロードされないようにするにはどうすればよいですか?

WebView banner = ... 
banner.setWebViewClient(new WebViewClient() { 

    @Override 
    public void onLoadResource(WebView view, String url) { 

     if (url.startsWith("app://")) { 

      Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url), getContext(), Main.class); 
      //startActivity(i); 
     } 
    } 
} 

banner.loadUrl("url_to_the_banner"); 

答えて

22

使用WebViewClient.shouldOverrideUrlLoading代わり:

は、ここに私のコードです。

public boolean shouldOverrideUrlLoading(WebView view, String url){ 
    // handle by yourself 
    return true; 
} 

WebViewClient Reference

更新:方法shouldOverrideUrlLoading(WebView, String)はAPIレベル24を使用する代わりにshouldOverrideUrlLoading(WebView, WebResourceRequest)に廃止されました。

+0

気を!私はちょうど参照でそれを逃した!ありがとう! – Alexis

6

しかし、それはそう、そうでない場合はfalseを返す必要があります。

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url){ 
    if(url.startsWith(myString){ 
     // handle by yourself 
     return true; 
    } 
    // ... 
    return false; 
} 
関連する問題