是否为同一域内的链接调用 shouldOverrideUrlLoading?

Is shouldOverrideUrlLoading called for links within the same domain?

我有一个混合应用程序,其中有一个 WebView,它正在实施 shouldOverrideUrlLoading 方法(包括已弃用的版本和最新版本)。这应该在我的域中加载任何外部 links 或某些 links 之前接管控制权。不赘述,代码大致如下:

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

我注意到所有外部 link 都能正常工作,但是当 link 在我的域中时,根本不会调用 shouldOverrideUrlLoading,所以我无法检测到那些我想接管控制权的情况。

android 文档指出

Give the host application a chance to take over the control when a new url is about to be loaded in the current WebView.

那个新的意思是不同的域吗?我有什么遗漏或做错了什么吗?关于如何检测用户单击指向同一域的 link 的任何想法?

提前致谢。

终于找到shouldOverrideUrlLoading 一直没有被调用的原因了。

显然该方法仅在实际加载即将开始时调用。我们的 Web 应用程序是单页应用程序,因此即使 URL 更改,也不会加载新页面并且不会调用 shouldOverrideUrlLoading。