【Cordova】开发app遇到的坑之 按两次返回键退出程序

前言:

  之前做移动端开发app,前端无论用的是framework7还是vux或者是自己写,都会碰到了一个问题,就是点安卓手机的物理返回键返回的不是我程序的上一级,而是操作的上一级界面,举个例子:

  我从A界面跳转到B界面,再从B界面跳转到下一级C界面,然后我点界面上的返回键会正常返回跳转到B界面,此时我要是点物理返回键就会又跳转到C界面,so,这是个坑,而且至今没找到什么好的解决办法,监听不到安卓物理键的返回,找了个折中的办法,用Cordova卡住物理返回键,做成点击一次提示继续点击退出程序,点击两次直接退出程序的样式,坑还是没有爬完,大神们有什么好的建议欢迎留言,跪谢~

  直接上代码:

<script src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
    // Wait for device API libraries to load    //
    function onLoad() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }
    document.addEventListener("deviceready", onDeviceReady, false);
 
    function onDeviceReady() {
        //navigator.splashscreen.hide();
        document.addEventListener("backbutton", onBackKeyDown, false);
    }
    function onBackKeyDown() {
        window.plugins.toast.showLongCenter('再按一次退出', function(a){console.log('toast success: ' + a)}, function(b){alert('toast error: ' + b)})
        document.removeEventListener("backbutton", onBackKeyDown, false); // 注销返回键
        document.addEventListener("backbutton", exitApp, false);//绑定退出事件
        // 3秒后重新注册
        var intervalID = window.setInterval(function() {
            window.clearInterval(intervalID);
            document.removeEventListener("backbutton", exitApp, false); // 注销返回键
            document.addEventListener("backbutton", onBackKeyDown, false); // 返回键
        }, 3000);
    }
    function exitApp(){
        navigator.app.exitApp();
    }
</script>

注意:

  需要在cordova上安装TOAST插件:

cordova plugin add cordova-plugin-x-toast
原文地址:https://www.cnblogs.com/shijianblog/p/12531531.html