android - 不会在 shouldOverrideUrlLoading 中捕获重定向
问题描述
编辑:我发现该网站是一个单页网站,这可能是我没有发现 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 上捕获的 url 不同)
谢谢
解决方案
找到了解决方案:我覆盖了一个名为 doUpdateVisitedHistory 的 WebViewClient 方法,它获取一个 url,即使在单页网站上也是如此
推荐阅读
- javascript - 如何将包含哈希的 URI 作为路由参数传递来表达?
- android - Kotlin:如何将图像 Uri 转换为 Bitmap 到 Base64
- python-3.x - 为 Python 3.7 安装 libffi-dev 时遇到问题
- python - 为什么我的 OR Pandas 过滤器逻辑不起作用?
- css - 如何更改 Foundation 5 中的中间断点
- python - 将月份转换为数字时如何有效地检查不同的日期格式
- windows - 如何使用 powershell 进行一些面向对象的编程:为一个 PS 应用程序创建多个表单
- angular - 角度表单组未使用复选框值更新
- c# - 需要帮助按属性选择 xml 节点
- mongodb - Prisma、MongoDB、Docker“对 http://localhost:4466/ 的请求失败,原因:连接 ECONNREFUSED 127.0.0.1:4466”