tecla studio retroceso power para fisicos desactivar celular botones boton app android angularjs cordova javascript-events ionic-framework

android - studio - desactivar botones s6



Deshabilitar el botón de retroceso de hardware en la aplicación iónica? (8)

Intento desactivar el botón Atrás en mi aplicación Cordova. Estoy usando AngularJS + Ionic Framework. Encontré temas sobre esto y probé el siguiente código, pero no tiene 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 presiono el botón Atrás, tengo "hello" en mi consola.


El ejemplo en los docs muestra los detectores de eventos, incluso el deviceready , que se adjunta después de que se haya disparado el evento de deviceready del documento.

Usando tu código:

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


Finalmente encontré la respuesta en this hilo del Foro Iónico:

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

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


Para ampliar la respuesta de David D, he incluido la implementación de regreso.

Pon esto en tu función .run aplicaciones:

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

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


Para deshabilitar el botón de retroceso de hardware en la aplicación Ionic para controlador (o controlador de componente), puede realizar la siguiente solución, pero primero no es para el controlador en sí, pero la combinación entre controladores y estado, en su controlador, agrega 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 la siguiente manera:

$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 su módulo (''aplicación''). Ejecutar función:

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

De esta forma se soluciona el problema con "sub sección" o "dentro del controlador"


Para evitar el uso de la aplicación desde el botón de atrás del dispositivo, use

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


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

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


Para Ionic 3:

// root component export class MyApp { constructor(platform: Platform) { platform.ready().then(() => { platform.registerBackButtonAction(() => { this.customBackButtonHandler(); }, 100) }); } customBackButtonHandler() { ... } }


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

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