web-dev-qa-db-fra.com

Phonegap Android Back Button - fermez l'application avec le bouton de retour sur la page d'accueil

Je développe une application Android utilisant Jquery Mobile/Phonegap. J'ai le code suivant pour contrôler le bouton de retour du téléphone:

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


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

Tout cela fonctionne bien, mais je voudrais que l'application se ferme lorsque vous appuyez sur le bouton de retour sur la page d'accueil uniquement, est-ce possible?

52
Dancer

Mise à jour: cela a cessé de fonctionner avec une dernière mise à jour Phonegap (soi-disant). N'hésitez pas à proposer une solution de travail si vous la connaissez.


Voici comment je le fais:

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);

Pour plus d'informations, vous trouverez ici la documentation associée avec un exemple complet: http://docs.phonegap.com/en/2.0.0/cordova_events_events.md.html#backbutton

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

Merci spader.

12
Thomas V J

Vous devez savoir quand la page d'accueil est affichée. Lorsque vous savez que vous êtes sur l'appel de la page d'accueil:

navigator.app.exitApp();
9
Simon MacDonald

Si vous ne souhaitez pas utiliser jQuery Mobile, remplacez $.mobile.activePage.is('#homepage') par document.getElementById('#homepage') sur @Spadar Shut answer, comme dans le code suivant:

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);
    }

De cette façon, vous n'avez pas besoin de télécharger le charabia Jquery Mobile uniquement à cette fin. De plus, activePage est obsolète à partir de JQuery mobile 1.4. et sera supprimé de 1.5.0. ( tilisez plutôt la méthode getActivePage () du widget pagecontainer )

1
shabang