PhoneGap Android Back Button - закрыть приложение с кнопкой возврата на главной странице - PullRequest
52 голосов
/ 22 декабря 2011

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

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


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

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

Ответы [ 4 ]

121 голосов
/ 29 декабря 2011

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

12 голосов
/ 17 сентября 2012
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    document.addEventListener("backbutton", onBackKeyDown, false);
}
function onBackKeyDown() 
{
 navigator.app.exitApp();
}

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

9 голосов
/ 22 декабря 2011

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

navigator.app.exitApp();
1 голос
/ 30 мая 2014

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...