Phonegap Android Back Button - 在主页上关闭带有后退按钮的应用程序

时间:2011-12-22 10:44:51

标签: jquery-mobile cordova

我正在使用Jquery Mobile / Phonegap开发Android应用程序。我有以下代码来控制手机的后退按钮:

document.addEventListener("backbutton", backKeyDown, true); 


function backKeyDown() { 
    // Call my back key code here.
    $.mobile.changePage("#homepage", "slideup");
}

这一切都运行正常,但我希望只在主页上按后退按钮关闭应用程序,这可能吗?

4 个答案:

答案 0 :(得分:121)

更新:这已停止使用最新的Phonegap更新(据称)。如果您知道,请随时提供可行的解决方案。


我是这样做的:

document.addEventListener("backbutton", function(e){
    if($.mobile.activePage.is('#homepage')){
        /* 
         Event preventDefault/stopPropagation not required as adding backbutton
          listener itself override the default behaviour. Refer below PhoneGap link.
        */
        //e.preventDefault();
        navigator.app.exitApp();
    }
    else {
        navigator.app.backHistory()
    }
}, false);

有关详细信息,请在此处找到相关文档,并附上完整示例:http://docs.phonegap.com/en/2.0.0/cordova_events_events.md.html#backbutton

答案 1 :(得分:12)

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    document.addEventListener("backbutton", onBackKeyDown, false);
}
function onBackKeyDown() 
{
 navigator.app.exitApp();
}

谢谢spader。

答案 2 :(得分:9)

您需要跟踪主页的显示时间。如果您知道自己正在主页上致电:

navigator.app.exitApp();

答案 3 :(得分:1)

如果您不想使用jQuery Mobile,请在@Spadar关闭答案上将$.mobile.activePage.is('#homepage')更改为document.getElementById('#homepage'),如以下代码所示:

document.addEventListener("deviceready", onDeviceReady, false);

    function onDeviceReady(){
        document.addEventListener("backbutton", function(e){
           if(document.getElementById('#homepage')){
               e.preventDefault();
               navigator.app.exitApp();
           }
           else {
               navigator.app.backHistory()
           }
        }, false);
    }

通过这种方式,不需要为此目的下载Jquery Mobile乱码。 Also, activePage is deprecated as of JQuery mobile 1.4.0并将从1.5.0中删除。 (Use the getActivePage() method from the pagecontainer widget instead