Кнопку помощью PhoneGap Андроид закрыть приложение с помощью кнопки возврата на главную страницу


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

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


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

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

4 52

4 ответа:

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

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

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

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

navigator.app.exitApp();

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

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 вместо)