Кнопка возврата Ionic 3 для Android-устройства выходит из приложения - PullRequest
0 голосов
/ 11 апреля 2019

При нажатии кнопки «Назад» на Android приложение закрывается. Я пытаюсь справиться с этим через registerBackButtonAction, но сам вызов не вызывается. Если я использую пустое ионное приложение без каких-либо плагинов Cordova, оно работает нормально, и я могу слушать registerBackButtonAction. Я подозреваю, что какой-то плагин Cordova конфликтует с кнопкой «Назад» на Android. Вот список плагинов, которые я использую, любая помощь будет оценена.

"plugins": {
  "cordova-plugin-whitelist": {},
  "cordova-plugin-statusbar": {},
  "cordova-plugin-device": {},
  "cordova-plugin-splashscreen": {},
  "cordova-plugin-ionic-webview": {
    "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
  },
  "cordova-plugin-ionic-keyboard": {},
  "cordova-plugin-media-capture": {},
  "cordova-plugin-file": {},
  "cordova-plugin-camera": {},
  "cordova-plugin-streaming-media": {},
  "cordova-plugin-local-notification": {},
  "mx.ferreyra.callnumber": {},
  "call-number": {},
  "cordova.plugins.diagnostic": {
    "ANDROID_SUPPORT_VERSION": "28.+"
  },
  "cordova-android-support-gradle-release": {
    "ANDROID_SUPPORT_VERSION": "27.+"
  },
  "cordova-plugin-audio-recorder": {},
  "cordova-plugin-network-information": {}
},
"platforms": [
  "android"
]

1 Ответ

0 голосов
/ 11 апреля 2019

Перейдите на свой app.component.ts и добавьте этот код

platformReady(){         // back button functionality.
    this.platform.ready().then(() => {

        this.statusBar.styleDefault();

        setTimeout(() => {
            this.splashScreen.hide();
        }, 100);
        this.platform.registerBackButtonAction(()=>this.myHandlerFunction());
    });
}

myHandlerFunction(){
    let nav = this.app._appRoot._getActivePortal() || this.app.getActiveNav();
    let activeView = nav.getActive();

    if (activeView != null) {
      if (nav.canGoBack()) {
            nav.pop();
      } else if(activeView.isOverlay) {
            activeView.dismiss();
      } else {
           this.showExitAlert();
      }
    }
 }


 showExitAlert() {
    this.alertCtrl.create({
    title: 'app name',
    cssClass:'alert-danger',
    message: 'Are you sure you want to exit the app?',
    enableBackdropDismiss: false,
    buttons: [{ text: 'Yes', handler: () => {
                this.platform.exitApp();
            }
        }, { text: 'Cancel', role: 'cancel', handler: () => {

           } 
        }]
    }).present();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...