关于javascript:Android-webview与H5混合开发-H5双击返回键退出应用程序

3次阅读

共计 1289 个字符,预计需要花费 4 分钟才能阅读完成。

一、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();}
    });
}
正文完
 0