编辑: 我发现该网站是一个单页网站,这可能是我没有赶上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上捕获的网址不同)
谢谢
答案 0 :(得分:0)
找到了解决方案: 我覆盖了一个名为doUpdateVisitedHistory的WebViewClient方法,该方法甚至在单页网站上也可以获取网址