我正在尝试在Android应用中将导航链接添加到WebView,但是WebView.canGoBack()始终返回false。我已经阅读了几篇关于SO的文章,并指出这是一个错误,并尝试了其他建议,包括shouldOverrideUrlLoading()均无济于事。因此,我认为它根本不起作用,而是在我的网页上添加了导航链接:
<a href="javascript:window.history.back()" title="Back"><i class="fa fa-arrow-left"></i></a>
<a href="javascript:window.history.forward()" title="Forward"><i class="fa fa-arrow-right"></i></a>
我还启用了JavaScript:
webView.getSettings().setJavaScriptEnabled(true);
在设备上的Firefox等浏览器中打开页面时,链接可以正常工作,但是在WebVeiw中查看页面时,链接将无法工作。
任何帮助将不胜感激。
更新-我尝试使用API 28进行定位和编译。结果相同。
答案 0 :(得分:0)
看起来像是WebView中的错误。我正在运行Chrome v67。
https://groups.google.com/a/chromium.org/forum/#!topic/android-webview-dev/YYxyjl2WZTA
当设备上安装了Google Chrome 63.0.3239.111版本时,WebView的历史记录以及关联的canGoBack()和goBack()方法无法正常工作。卸载或禁用Google Chrome及其Webview实施即可解决此问题。
此问题已在Android版本6.0.1、7.1.2和8.1.0上进行测试和确认。
问题描述: 安装Chrome后,无法正常保存网络视图历史记录。当您使用webView.goBack()导航回到之前访问的页面时,有时会跳过此页面,并且webView返回到第一个访问的页面。其他时候,历史记录只是空的,导致webView.canGoBack()返回false,尽管您之前访问过某个页面。
解决方法: 从设备上卸载chrome或使用“系统开发者选项”“ WebView实现”将其禁用。
Google,请提供Chrome更新,以永久解决此问题。我们的用户对这种不一致的行为感到非常困惑。如果这不是适合开发人员主题的论坛,请告知应该在哪个论坛或Google网上论坛发布和跟踪此问题。
非常感谢您。