¿Deshabilitar el botón de retroceso del hardware en la aplicación iónica?

Estoy intentando inhabilitar el botón de la parte posterior en mi app de Cordova. Estoy utilizando AngularJS + marco iónico. Encontré temas sobre esto y probé el código abajo, pero no tiene absolutamente ningún efecto. ¿Alguna idea? ¡Gracias!

Index.html

<head> <script> document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { document.addEventListener("backbutton", function (e) { e.preventDefault(); console.log("hello"); }, false ); } </script> </head> 

Tenga en cuenta que cuando vuelvo a pulsar el botón, tengo "hola" en mi consola.

Finalmente encontré la respuesta en este hilo del foro de Ionic:

 $ionicPlatform.registerBackButtonAction(function () { if (condition) { navigator.app.exitApp(); } else { handle back action! } }, 100); 

$ionicPlatform.registerBackButtonAction permite sobrescribir completamente el comportamiento del botón anterior. El primer parámetro es una función de devolución de llamada y el segundo una prioridad (sólo se ejecuta la devolución de llamada con la prioridad más alta).

 $ionicPlatform.registerBackButtonAction(function (event) { event.preventDefault(); }, 100); 

Esto evitará la funcionalidad del botón de retroceso.

Para ampliar la respuesta de David D he incluido la implementación de volver atrás.

Ponga esto en su función de aplicaciones .run:

 $ionicPlatform.registerBackButtonAction(function (event) { if ($ionicHistory.currentStateName() === 'someStateName'){ event.preventDefault(); } else { $ionicHistory.goBack(); } }, 100); 

Esto no funcionará en los controladores, es amplia aplicación.

Su simple truco evitar volver a una sola página:

  `.controller('DashCtrl', function($scope,$ionicHistory) { $ionicHistory.clearCache(); $ionicHistory.clearHistory(); })` 

El ejemplo en la documentación muestra los oyentes de eventos, incluso el deviceready , que se adjunta después de que el evento de deviceready documento se ha disparado.

Usando su código:

 function onDeviceReady() { document.addEventListener("backbutton", function (e) { e.preventDefault(); console.log("hello"); }, false); } document.onload = function () { document.addEventListener("deviceready", onDeviceReady, false); }; 

Para evitar que la aplicación de la funcionalidad del botón de retroceso del dispositivo se utilice,

  $ionicPlatform.registerBackButtonAction(function (event) { event.preventDefault(); }, 100); 

Si desea evitar el uso de la página en particular,

  $ionicPlatform.registerBackButtonAction(function (event) { event.preventDefault(); if ($location.path() === "/pagename" || $location.path() === "pagename") { navigator.app.exitApp(); } else { $ionicHistory.goBack(); } }, 100); 

Para desactivar el botón de hardware atrás en la aplicación de Ionic para el controlador (o controlador de componente), puede hacer la siguiente solución, pero en primer lugar no es para el controlador en sí, pero la combinación entre los controladores y el estado, en su controlador, agregue su código normal :

  var deRegisterHardBack = $ionicPlatform.registerBackButtonAction( function (event) { if (youConditionHere) { event.preventDefault(); // do something } else { $ionicHistory.goBack(); } }, 100); 

Pero en su $stateProvider agregue disableHardwareBackButton como el siguiente:

 $stateProvider .state('app.stateB', { url: '/page-b/:id', template: '<ion-view><ion-nav-title>Sub Page </ion-nav-title>Hello</ion-view>', disableHardwareBackButton : true }); 

Dentro de tu módulo ('app') Función run:

 $ionicPlatform.registerBackButtonAction(function(event){ if ($state.current.disableHardwareBackButton){ event.preventDefault(); } else { $ionicHistory.goBack(); } } 

De esta manera usted consigue alrededor del problema con la "sub sección" o "dentro del regulador"

  • Llamada de teléfono móvil o mailto no funciona en absoluto
  • Las solicitudes iónicas devuelven 404 sólo en android, en Chrome funciona bien
  • Creación de una notificación local en respuesta a una notificación push (desde firebase) en cordova / ionic
  • Ionic CLI no pudo añadir Plataforma Android
  • Configuración de Android Home path en marco iónico
  • Vídeo como imagen de fondo ionic app
  • Cambio del título de la pestaña de íon-nav-bar a imagen - marco iónico
  • Cómo utilizar la imagen como botón en iónico
  • No se puede agregar la plataforma para ios y android (Error: ENOENT, ningún archivo o directorio)
  • Cómo obtener el dispositivo UUID en marco iónico
  • Ionic no puede ejecutar la plataforma iónica android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.