Webview webBackForwardList 不存储所有 URL 历史记录
Webview webBackForwardList doesn't store all the URL history
最近我得知我的混合 Android 应用程序无法正常工作。
投诉是当他们按下设备上的后退按钮时,它应该返回到之前的网页视图 url。
但它会返回到 url,这就像用户按了两次后退按钮。
所以当我查看日志时
@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 这样的真实设备,第三个和第一个网址丢失了。
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
它几周前还工作得很好。
有什么我遗漏的吗?
试试这个:
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();
}
}
如果 Android 设备安装了 Chrome 版本 63.0.3239.111,webview 的后退列表无法正常工作。禁用或恢复到 Chrome 的早期版本对我有用。但是,该解决方案可能并不适合所有人。在那种情况下,等待 Chrome 的下一个版本并重新测试。祝你好运。
最近我得知我的混合 Android 应用程序无法正常工作。
投诉是当他们按下设备上的后退按钮时,它应该返回到之前的网页视图 url。
但它会返回到 url,这就像用户按了两次后退按钮。
所以当我查看日志时
@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 这样的真实设备,第三个和第一个网址丢失了。
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
它几周前还工作得很好。
有什么我遗漏的吗?
试试这个:
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();
}
}
如果 Android 设备安装了 Chrome 版本 63.0.3239.111,webview 的后退列表无法正常工作。禁用或恢复到 Chrome 的早期版本对我有用。但是,该解决方案可能并不适合所有人。在那种情况下,等待 Chrome 的下一个版本并重新测试。祝你好运。