Webview webBackForwardList不存储所有URL历史记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Webview webBackForwardList不存储所有URL历史记录相关的知识,希望对你有一定的参考价值。
最近我得知我的混合android应用程序无法正常工作。
抱怨是,当他们按下设备上的后退按钮时,它应该返回到之前的webview网址。
但它会回到一个网址,就像用户按下两次按钮一样。
所以当我看一下日志
@Override
public void onBackPressed() {
WebBackForwardList URL = webView.copyBackForwardList();
for(int i = 0;i < URL.getSize(); i++){
Log.d("URL list : " + i, URL.getItemAtIndex(i).getUrl());
}
}
使用模拟器,它显示我输入的所有URL列表。
哪个工作正常
D/URL list : 0: //https://www.blabla.com/ //First webview
D/URL list : 1: //https://www.blabla.com/catalog/category/view/id/999/ //Second webview
D/URL list : 2: //https://www.blabla.com/brand/bla.html //Third webview
D/URL list : 3: //https://www.blabla.com/44444444.html //Fourth webview
但是使用像三星Galaxy S6这样的真实设备,第三个和第一个Urls丢失了。
URL list : 0: //https://www.blabla.com/catalog/category/view/id/999/ //Second webview
URL list : 1: //https://www.blabla.com/44444444.html //Fourth webview
它曾经几周前工作正常。 我错过了什么吗?
答案
如果Android设备安装了Chrome版本63.0.3239.111,则webview的后退列表无法正常运行。禁用或恢复到早期版本的Chrome为我做了诀窍。但是,该解决方案可能并不适合所有人。在这种情况下,请等待Chrome的下一个版本并重新测试。祝你好运。
另一答案
试试这个:
public static WebBackForwardList getHistoricalList(WebView webView) {
return webView.copyBackForwardList();
}
@Override
public void onBackPressed() {
WebBackForwardList URL = getHistoricalList(webView)
for(int i = 0;i < URL.getSize(); i++){
Log.d("URL list : " + i, URL.getItemAtIndex(i).getUrl());
}
}
快乐的编码!!
另一答案
试试这个
@Override
public void onBackPressed() {
if(webView.canGoBack())
{
webView.goBack();
}
else
{
super.onBackPressed();
}
}
以上是关于Webview webBackForwardList不存储所有URL历史记录的主要内容,如果未能解决你的问题,请参考以下文章