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

发布于 2024-11-09 08:19:54 字数 512 浏览 0 评论 0原文

有效:

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

Works:

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

Doesn't Work:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

‖放下 2024-11-16 08:19:54

问题在于正在创建无限循环。它每次都会重新覆盖新的 loadUrl。例如,这可以正常工作:

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

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

The problem is just that an infinite loop is being created. It re-overrides the new loadUrl each time. For example, this works without problems:

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

Note that simply saving the last override URL and comparing with if(!url.equals(lastOverrideUrl)) will not work in this case (and many others), as the URL is automatically changed from "http://yahoo.com" to "http://www.yahoo.com/".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文