Android WebView 因重定向无法正常goBack()的一种解决小方案

来源:互联网 发布:excel做数据分析好吗 编辑:程序博客网 时间:2024/06/05 04:49

昨天在项目里面A界面点击不同的按钮跳到一个B界面webViewPageActivity,用Intent传入不同的title和url,B界面中有一个大的webView,加载不同的url,但是点击后退键的时候,有一个url总是觉得自己可以后退,canGoBack()总是得到true,导致点击手机的后退键webView总是在刷新,通过打断点的方法得到这个错误原因后,我就想如果能再加一个判断,判断是否当前界面是否和Intent传进来的url是否相同,如果相同,取一下反,就可以直接走closeActivity()方法,其他的url不会受到影响.

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {    //先拼出intent传进来的url的完整url    String webViewUrl = webUrl + "/html/index.html";    //打印 按下后退键时,webview的url是什么    Log.i("webViewUrl:", webView.getUrl());    //多加一个判断 如果当前url和intent传进来的url是相等的 取反->走closeActivity()    if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack() && !webViewUrl.equals(webView            .getUrl())) {        webView.goBack();        return true;    } else {        closeActivity();    }    return super.onKeyDown(keyCode, event);}private void closeActivity() {    if (webView != null) {        final ViewGroup viewGroup = (ViewGroup) webView.getParent();        if (viewGroup != null) {            viewGroup.removeView(webView);        }        webView.destroy();    }    finish();}

3 0