如何拦截WebView(android)中的url加载?

时间:2012-12-07 09:31:07

标签: android webview android-webview

我有一个WebView,我在其中加载了一个带有自定义链接的页面(比如app:// action)。我在清单文件中注册了url方案,当我点击链接时,调用我的Activity的onResume()方法并使用正确的数据,它可以正常工作。

我的问题是WebView仍然尝试加载链接,我的WebView最终显示“网页不可用”消息。我不希望这样。

如何阻止WebView加载网址?

这是我的代码:

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");

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:6)

但是否则必须返回false,所以:

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