我有一个混合应用程序,我有一个WebView,它实现了shouldOverrideUrlLoading方法(已弃用和最新版本)。这应该在加载我的域中的任何外部链接或某些链接之前接管控制权。没有详细说明,代码看起来像这样:
private WebView mWebView;
mWebView.setWebViewClient(new myWebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.isExternal() || url.contains("#specialCase")) {
// Do actions
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
});
我注意到所有外部链接都正常工作,但是当链接在我的域中时,根本没有调用OverUublUrlLoading,因此我无法检测到我想接管控制的情况。
android文档说明
在新时,让主机应用程序有机会接管控制权 url即将加载到当前的WebView中。
新的意味着不同的域吗?有什么我遗失或做错了吗?有关如何检测用户的任何想法都点击了指向同一域的链接?
提前谢谢。
答案 0 :(得分:1)
终于找到了为什么永远不会调用shouldOverrideUrlLoading的原因。
显然,该方法仅在实际加载即将开始时调用。我们的Web应用程序是单页面应用程序,因此即使URL更改,也不会加载新页面并且不会调用shouldOverrideUrlLoading。