Phonegap Android Back Button - закрыть приложение с кнопкой "Назад" на главной странице

Я разрабатываю приложение для Android, используя JQuery Mobile/Phonegap. У меня есть следующий код для управления кнопкой возврата телефона:

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


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

Все работает отлично, но я хотел бы, чтобы приложение закрывалось при нажатии кнопки "Назад" только на домашней странице, возможно ли это?

Ответ 1

Обновление: это перестало работать с последним обновлением 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

Ответ 2

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

Спасибо, спайдер.

Ответ 3

Вам нужно будет отслеживать, когда отображается домашняя страница. Когда вы знаете, что вы находитесь на домашней странице:

navigator.app.exitApp();

Ответ 4

Если вы не хотите использовать jQuery Mobile, измените $.mobile.activePage.is('#homepage') на document.getElementById('#homepage') на ответ @Spadar Shut, как на следующий код:

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 gibberish только для этой цели. Кроме того, activePage устарел от JQuery mobile 1.4.0 и будет удален с 1.5.0. (Используйте метод getActivePage() из виджета pagecontainer вместо)