Android(安卓)webview与H5混合开发 -- H5双击返回键退出应用程序
16lz
2021-01-26
一、Android与H5混合开发双击手机返回键退出APP的问题
1、项目场景:
(1)在APP内进行一系列操作之后,点击返回键只会一直返回,双击返回也在执行返回界面的操作,如何实现双击返回键退出应用的操作?
(2)App内有几个顶层界面,==需求是点击返回键提示再次点击即将退出当前APP==,若没做处理时会遇到:一直返回最后会返回到登录界面。
2、处理思路:
(1)Android webview 与js(vue)实现交互,然后Android接受特定的界面返回值来判断是否退出当前APP。还是返回上一层路由。具体实现可以参考这篇博客
(2)因为用第一种思路的时候,实现的不是很完美,不知道是不是我哪里操作错误,看了很久最后放弃了,跟公司的Android开发最后采取了下面这种方式去实现,思路如下:因为顶层页面的路由是固定的,所以我们通过在Android中去获取当前界面路由,截取关键字段,判断是否等于顶层界面路由字段,不等的话回退到上一个界面路由,相等的时候,给提示,然后连续点击即可退出APP。暂时在使用过程中还没有发现什么问题,如大家在使用过程中,有更好的处理方法和问题,欢迎大家在下方评论告知。
/*** 首页五个界面URL的末尾字符*/private List strList = new ArrayList<>(Arrays.asList("/chatlist", "/friends", "/shop", "/cart", "/my"));
@Overridepublic void onBackPressed() {//super.onBackPressed(); String js = "appgoback()"; webView.evaluateJavascript(js, new ValueCallback() { @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(); } });}
更多相关文章
- 第3章 UI
- Android需不需要手动退出
- Android(安卓)“再按一次返回键退出程序”
- 初识Android的界面UI
- 【android】 使用观察者模式更新用户资料
- 关于android textview,edittext,导致界面的卡顿
- Android之路——第一个上线 APP项目总结
- Android中利用Handler在子线程中更新界面--简单的小球上下跳动案
- Android(安卓)模拟器测试远程服务器成功,但是到真机上测试一点反