53 votes

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

Je développe une application Android en utilisant Jquery Mobile/Phonegap. J'ai le code suivant pour contrôler le bouton 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 l'on appuie sur le bouton retour de la page d'accueil uniquement, est-ce possible ?

121voto

Spadar Shut Points 4673

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


Voici comment je 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 correspondante avec un exemple complet : http://docs.phonegap.com/en/2.0.0/cordova_events_events.md.html#backbutton

12voto

Thomas V J Points 219
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    document.addEventListener("backbutton", onBackKeyDown, false);
}
function onBackKeyDown() 
{
 navigator.app.exitApp();
}

Merci, Spader.

9voto

Simon MacDonald Points 19216

Il vous faudra surveiller le moment où la page d'accueil est affichée. Quand vous savez que vous êtes sur la page d'accueil, appelez :

navigator.app.exitApp();

1voto

spucktek Points 103

Si vous ne souhaitez pas utiliser jQuery Mobile, modifiez les paramètres suivants $.mobile.activePage.is('#homepage') a document.getElementById('#homepage') sur la réponse de @Spadar Shut, comme sur 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 dans ce but. En outre, activePage est obsolète depuis la version 1.4.0 de JQuery mobile. et sera supprimé de la version 1.5.0. ( Utilisez plutôt la méthode getActivePage() du widget pagecontainer. )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X