在shouldOverrideUrlLoading中未捕获重定向

时间:2018-11-13 07:29:27

标签: android webview

编辑: 我发现该网站是一个单页网站,这可能是我没有赶上URL更改的原因,所以现在我的问题是:我可以知道单页网站上的URL更改了吗?

我有一个加载网站的webView。 在页面的第一次加载时,shouldOverrideUrlLoading只会调用一次,而在网页内部重定向时则不会。

这是我使用的webClient的代码:

private class WebViewClientServiceGuide extends MyWebViewClient {
private WebView wv;

public WebViewClientServiceGuide(WebView _wv) {
    wv = _wv;
    Log.d(TAG, "WebViewClientServiceGuide.ctor");
}

public void onLoadResource(WebView view, String url) {
    Log.d(TAG, "WebViewClientServiceGuide - onLoadResource: " + url);
    super.onLoadResource(view, url);
}

@Override
public void onPageFinished(WebView view, String url) {
    //Add history to history manager if needed
    Log.d(TAG, "WebViewClientServiceGuide - onPageFinished");
    super.onPageFinished(view,url);
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    Log.d(TAG, "WebViewClientServiceGuide - shouldOverrideUrlLoading(WebView view, WebResourceRequest request)");
    return super.shouldOverrideUrlLoading(view, request);
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Log.d(TAG, "WebViewClientServiceGuide - shouldOverrideUrlLoading");
    return false;
}
}

可以说我访问了以下页面:page1,page2,page3,但是在shouldOverrideUrlLoading上仅捕获了page1。但是,当我检查webView(copyBackForwardList)的历史记录时,我看到了所有列表(page1,page2,page3)。

为什么会发生? (我尝试使用其他网站并捕获所有页面-我知道网站开发人员应该对其进行修复,但我想知道为什么历史记录堆栈与我在shouldOverrideUrlLoading上捕获的网址不同)

谢谢

1 个答案:

答案 0 :(得分:0)

找到了解决方案: 我覆盖了一个名为doUpdateVisitedHistory的WebViewClient方法,该方法甚至在单页网站上也可以获取网址