shouldOverrideUrlLoading将加载“file:///”但不是“http://”URL参数

时间:2011-05-24 18:51:22

标签: android webview webviewclient

使用:

mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl("file:///android_asset/www/css-js/app.css");
        return true;
    }
});

不起作用:

mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl("http://yahoo.com");
        return true;
    }
});

1 个答案:

答案 0 :(得分:2)

问题在于正在创建一个无限循环。它每次重新覆盖新的loadUrl。例如,这没有问题:

public boolean shouldOverrideUrlLoading(WebView view, String url) 
{
    if(!url.toLowerCase().contains("yahoo.com"))
    {
        view.loadUrl("http://yahoo.com");
        return true;
    }
    return false;
}

请注意,只是保存最后一个覆盖网址并与if(!url.equals(lastOverrideUrl))进行比较在这种情况下(以及其他许多网页)不起作用,因为网址会自动从“http://yahoo.com”更改为“http” ://www.yahoo.com/”