【发布时间】:2018-09-13 13:11:07
【问题描述】:
我有一些逻辑,我希望我的 WebView 在我尝试更改其 url 时应用。对于加载页面中的链接,这很好,我可以通过在我的自定义 WebViewClient 上使用 shouldOverrideUrlLoading 方法来完成。
但是当我在我的 WebView 上显式调用 loadUrl 时,shouldOverrideUrlLoading 不会被触发(显然,从这个方法中调用 loadUrl 时会产生无限循环)。
有没有办法手动“预加载”一个 url 以便调用 shouldOverrideUrlLoading 方法?
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("myapp://")
{
//Do something
}
else {
view.loadUrl(url);
}
return true;
}
当我从呈现的页面中单击链接时,这可以正常工作。但如果我打电话:
mWebView.loadUrl("myapp://whatever");
shouldOverrideUrlLoading() 未被调用。我要问的是是否有一种方法可以将 url 传递给我的 webView,以便在实际加载之前将其传递给 shouldOVerrideUrlLoading()。 (即 shouldOVerrideUrlLoading() 每当要加载新的 url 即将时调用。这就是我要触发的事件)
【问题讨论】:
-
你需要什么 1st webview.loadurl(URL);还是应该OverrideLoading?
-
每当我需要手动更改 webview 的 url 时,我想利用我的 shouldOverrideUrlLoading 逻辑,而不必复制代码。
-
张贴您的代码 sn-p 以便更好地理解
-
我试图澄清一点,但实际上没有我可以发布的代码。
-
@Gabriel 你有没有找到一个优雅的解决方案?现在我持有对客户的引用并调用
(!client.shouldOverrideUrlLoading()) { view.loadUrl(url); }而不是view.loadUrl(url)