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?
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
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("backbutton", onBackKeyDown, false);
}
function onBackKeyDown()
{
navigator.app.exitApp();
}
Merci spader.
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();
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 )