一、Android 与 H5 混合开发双击手机返回键退出 APP 的问题
1、我的项目场景:
(1)在 APP 内进行一系列操作之后, 点击返回键只会始终返回, 双击返回也在执行返回界面的操作, 如何实现双击返回键退出利用的操作?
(2)App 内有几个顶层界面,== 需要是点击返回键提醒再次点击行将退出以后 APP==, 若没做解决时会遇到:始终返回最初会返回到登录界面。
2、解决思路:
(1)Android webview 与 js(vue) 实现交互,而后 Android 承受特定的界面返回值来判断是否退出以后 APP。还是返回上一层路由。具体实现能够参考这篇博客
(2)因为用第一种思路的时候,实现的不是很完满,不晓得是不是我哪里操作谬误,看了很久最初放弃了,跟公司的 Android 开发最初采取了上面这种形式去实现,思路如下:因为顶层页面的路由是固定的,所以咱们通过在 Android 中去获取以后界面路由,截取关键字段,判断是否等于顶层界面路由字段,不等的话回退到上一个界面路由,相等的时候,给提醒,而后间断点击即可退出 APP。临时在应用过程中还没有发现什么问题,如大家在应用过程中,有更好的解决办法和问题,欢送大家在下方评论告知。
/**
* 首页五个界面 URL 的开端字符
*/
private List<String> strList = new ArrayList<>(Arrays.asList("/chatlist", "/friends", "/shop", "/cart", "/my"));
@Override
public void onBackPressed() {//super.onBackPressed();
String js = "appgoback()";
webView.evaluateJavascript(js, new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {long currentTime = System.currentTimeMillis();
String url = webView.getUrl();
String endUrl = url.substring(url.lastIndexOf("/"));
// 判断在首页返回,退出界面
if (strList.contains(endUrl)) {if ((currentTime - touchTime) >= waitTime) {
// 让 Toast 的显示工夫和等待时间雷同
Toast.makeText(getApplicationContext(), "再按一次退出", (int) waitTime).show();
touchTime = currentTime;
} else {finish();
}
return;
}
d("value:" + value);
if (value.equals("0")) {d("true", "equal");
if (webView.canGoBack()) {webView.goBack();
} else {moveTaskToBack(true);
}
return;
}
finish();}
});
}