11

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

我的问题是 WebView 仍然尝试加载链接,而我的 WebView 最终显示“网页不可用”消息。我不想要那个。

如何防止 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 回答