一、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();
}
});
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。