繁体   English   中英

如何在Ionic中收听Android硬件后退按钮

[英]How to listen Android hardware back button in ionic

我尝试听android硬件后退按钮,但是没有效果。

主要代码:

.run(['$ionicPlatform','$ionicHistory',function($ionicPlatform,$ionicHistory) {
     $ionicPlatform.ready(function() {
                          if(window.cordova && window.cordova.plugins.Keyboard) {
                          cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
                          }
                          if(window.StatusBar) {
                          StatusBar.styleDefault();
                          }
                          });
     $ionicPlatform.registerBackButtonAction(function (e) {
         e.preventDefault();
         $ionicHistory.nextViewOptions({
             disableAnimate: true
        });
        $ionicHistory.viewHistory().backView.go();
         return false;
       }, 100);
     }])

我的运行环境是移动浏览器。Android版本4.4.2

更新:我不再使用它,因为它不可靠。 此外,在最新的Ionic版本中,app.ts现在是app.component.ts。

对于Ionic 2,请查看有关如何解决此问题的博客文章。 应该也适用于Ionic 1,因为它仅调用Cordova侦听器:

http://www.codingandclimbing.co.uk/blog/ionic-2-android-back-button-13

这是实际的帖子信息:

在您的app.ts中,执行以下操作以使后退按钮按预期方式工作(通常是!):

  initializeApp() {
    this.platform.ready().then(() => {
      this.registerBackButtonListener();
    });
  }

  registerBackButtonListener() {
    document.addEventListener('backbutton', () => {
      var nav = this.getNav();
      if (nav.canGoBack()) {
        nav.pop();
      }
      else {
        this.confirmExitApp(nav);
      }
    });
  }


confirmExitApp(nav) {
    let confirm = Alert.create({
      title: 'Confirm Exit',
      message: 'Really exit app?',
      buttons: [
        {
          text: 'Cancel',
          handler: () => {
            console.log('Disagree clicked');
          }
        },
        {
          text: 'Exit',
          handler: () => {
            navigator.app.exitApp();
          }
        }
      ]
    });
    nav.present(confirm);
  }

  getNav() {
    return this.app.getComponent('nav');
  }

注意:

如果您收到关于应用不是导航器属性的错误:

1)在您的应用程序根目录中添加一个types文件夹:例如app / typings

2)添加一个名为: pluginshackyhacky.d.ts的文件

3)添加用于扩展TypeScript所需的属性:

interface /*PhoneGapNavigator extends*/ Navigator {
    app: any;
}

4)pluginshackyhacky.d.ts添加到在tsconfig.json编译:

  "files": [
    "app/app.ts",
    "app/typings/pluginshackyhacky.d.ts",
    "app/typings/phonegap.d.ts"
  ]

您可以看到,我还包含了phonegap.d.ts文件,该文件包含许多缺少的属性/变量,这些属性/变量允许TypeScript进行编译而不会出错。

希望这可以帮助任何有此问题的人。

干杯。

也许这可以帮助您。

 $state.$current.name == "";var backbutton=0;
 $ionicPlatform.registerBackButtonAction(function (event) {

    if (($state.$current.name == "app.intro") ||
        ($state.$current.name == "app.main.home") ||
        ($state.$current.name == "app.account")) {
        if(backbutton==0){
            backbutton++;
            window.plugins.toast.showLongBottom('Press again to exit');
            $timeout(function(){backbutton=0;},3000);
        }else{
            navigator.app.exitApp();
             }
        console.log("one");
    }else if($state.$current.name == "app.welcome.takeControl") {
        console.log("two");
            $state.go("app.main.home");
    }else{
        console.log("three");
            navigator.app.backHistory();
          }
}, 100);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM