【问题标题】:Back button in Android App not working to exit the applicationAndroid应用程序中的后退按钮无法退出应用程序
【发布时间】:2014-11-29 09:04:30
【问题描述】:

我正在使用 Cordova 3.6 版 创建我的第一个移动应用程序。我想在到达主页时使用设备的后退按钮退出应用程序。我浏览了以下资源,但无法达到目的。

http://cordova.apache.org/docs/en/3.6.0/cordova_events_events.md.html#backbutton

PhoneGap - android exit on backbutton

backbutton confirm exit app android + phonegap + jquery

我的代码:

Js:

function onLoad() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }

function onDeviceReady() {
// Register the event listener
document.addEventListener("backbutton", onBackKeyDown, false);
}

function onBackKeyDown() {
document.addEventListener("backbutton", function(e){
if($('body').is('#main')){ //main is the home page id.. 
    e.preventDefault();
    navigator.app.exitApp();    
} else {
    navigator.app.backHistory()
}
}, false);
}

HTML:

感谢您的时间和努力。

【问题讨论】:

    标签: android jquery cordova


    【解决方案1】:

    在事件处理程序中再次向后退按钮添加侦听器没有多大意义。所以从onBackKeyDown() 中删除document.addEventListener。并将事件传递给函数。

    function onBackKeyDown(e) {
      if($('body').is('#main')){ //main is the home page id.. 
        e.preventDefault();
        navigator.app.exitApp();    
      } else {
        navigator.app.backHistory()
      }
    }
    

    【讨论】:

    • 究竟是什么不起作用?按键时是否触发onBackKeyDown?
    • 当我按下键时,它会返回上一页并且不会退出应用程序。
    • OK,但是按键的时候会触发onBackKeyDown吗?将警报或 console.log 放入其中进行检查。
    • 不,警报也没有出现。根据以下答案,可能是因为cordova.js。但是,由于有基于平台的 cordova.js 文件;我不太确定如何将其包含到代码中。
    【解决方案2】:

    您必须添加

    给你的 html 文件。为您的路径输入真实地点

    【讨论】:

    • 是的,不包括cordova.js;但是我在项目目录中找不到它。 index.js 和 cordova.js 是一样的吗?
    • 没有 cordova.js 是 Cordova SDK 提供的其他文件。它在 www 目录内
    • 它在 www 文件夹中丢失,但是我在某处读到它位于 android 和相应平台目录的 platforms\android\platform_www 中。我可以在那里看到它。但是现在我很困惑是否需要将其粘贴到主 www 目录中并包含在 index.html 中或给出整个路径?在前一种情况下,如果我构建一个 iphone 应用程序,两个 cordova.js 文件之间不会有冲突吗?感谢您的宝贵时间。