Android WebView canGoBack总是返回false

时间:2017-12-15 10:54:17

标签: java android google-chrome webview

重现问题的步骤:

  1. 在里面创建一个带有WebView的片段。

  2. 在WebView深处浏览几个站点,构建历史记录。

  3. 尝试使用webview.canGoBack()函数。

  4. 观察它总是返回false。

  5. 这是一种新行为,因为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();
            }
        }
    }
    

2 个答案:

答案 0 :(得分:0)

此处link

谈论问题和可能的解决方案

答案 1 :(得分:0)

最新的Chrome发布后,WebView canGoBack功能再次正常运行:

<强> 64.0.3282.137