重现问题的步骤:
在里面创建一个带有WebView的片段。
在WebView深处浏览几个站点,构建历史记录。
尝试使用webview.canGoBack()函数。
观察它总是返回false。
这是一种新行为,因为WebView确实在之前返回true。
似乎新版本的WebView破坏了这一功能。
这是我的代码:
class MyWebViewClient extends WebViewClient {
// Loads all hyperlinks in the existing WebView
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// Protection against getActivity() returning null object reference
if (!isAdded()) return true;
// Allow WebView to load url
Uri uri = Uri.parse(url);
// Google Maps
if (url.contains("maps.google")) {
Intent mapIntent = new Intent(Intent.ACTION_VIEW, uri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivity(mapIntent);
}
return true;
}
// Telephone
else if (url.contains("tel:")) {
String phoneNumber = url.substring(4);
Utils.dialPhone(getActivity(), phoneNumber);
return true;
}
// Redirect
return false;
}
}
我在这里使用goBack API:
public boolean canWebViewGoBack() {
if (mWebView != null) {
if (mWebView.canGoBack()) {
return true;
}
}
return false;
}
public void webViewGoBack() {
if (mWebView != null) {
if (mWebView.canGoBack()) {
mWebView.goBack();
}
}
}
答案 0 :(得分:0)
此处link
谈论问题和可能的解决方案
答案 1 :(得分:0)
最新的Chrome发布后,WebView canGoBack功能再次正常运行:
<强> 64.0.3282.137 强>