11

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

私の問題は、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");
4

2 に答える 2

23

代わりに WebViewClient.shouldOverrideUrlLoading を使用してください。

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

WebViewClient リファレンス

更新:メソッドshouldOverrideUrlLoading(WebView, String)は API レベル 24 で廃止されましshouldOverrideUrlLoading(WebView, WebResourceRequest)た。代わりに使用してください。

于 2012-12-07T09:46:17.297 に答える
7

ただし、それ以外の場合は false を返す必要があるため、次のようになります。

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
    if(url.startsWith(myString){
        // handle by yourself
        return true;
    } 
    // ...
    return false;
}
于 2014-08-04T16:00:27.487 に答える