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

xiaoxiao2021-02-27  356

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

@Override public 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(); }

转载请注明原文地址: https://www.6miu.com/read-1601.html

最新回复(0)