javascript - una - mantener app en segundo plano android
¿Cómo evitar que Android cierre la aplicación web cuando se presiona el botón atrás? (3)
Estoy desarrollando una aplicación web HTML5 y compilándola con Cordova (phonegap) 1.7.
Quiero anular el botón de respaldo de Android para que pueda llamar a window.history.back () en lugar de cerrar la aplicación (Android predeterminado). ¿Cómo puedo evitar que Android mate la actividad defectuosa del botón Atrás presionado?
Obtengo el "botón Atrás presionado !!!!" en logcat, entonces el método se dispara antes de que se cierre la aplicación.
Esto es lo que tengo hasta ahora:
// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
//
function onDeviceReady() {
document.addEventListener("backbutton", function(e) {
console.log("Back button pressed!!!!");
window.history.back();
}, false);
}
EDITAR: Estoy dispuesto a aceptar una respuesta que explique una forma de simular window.history.back () directamente desde la clase de Android DefaultActivity.java, si eso es posible.
Nunca tuve que hacer eso, pero, ¿has intentado return true
?
Al igual que en Java SDK, si devuelve True
, el sistema asumirá que ha atrapado correctamente el evento y ya no lo pasará a otros oyentes del evento.
Tomé este enfoque. Enganché el evento de botón trasero como lo has mostrado. Miro para ver si esta es la primera página o no y luego le pregunto al usuario si quiere salir del programa o no. Esto depende de lo que quiera que haga su programa dependiendo de su estado. No agregué la anulación como lo has mostrado; No parecía necesitarlo.
if ($.mobile.activePage.attr(''id'') === ''firstpage'') {
// Prompt to confirm the exit
} else {
window.history.back();
}
Si quieren salir, pueden llamar a:
navigator.app.exitApp();
para cerrar tu programa
Me imagino que todavía quieres permitir que el usuario salga de tu aplicación. No tiendo a usar aplicaciones que no permiten una salida de algún tipo.
Espero que esto te ayude.
Resolví mi propia pregunta agregando el siguiente código al archivo DefaultActivity.java
para evitar el comportamiento predeterminado de Android y mantener el código JavaScript como se indica en la pregunta:
@Override
public void onBackPressed() {
return;
}
¡Espero que esto ayude a alguien en el futuro con el mismo problema!