首页 文章

Ionic - 禁用Windows Phone 8.1中的硬件后门按钮无法正常工作

提问于
浏览
1

我正在开发使用IONIC框架 . 我在使用硬件后退按钮时遇到问题 .

在Android中硬件后退按钮工作得很好,但Windows手机没有工作 . 当我使用Windows手机上的后退按钮时,最小化应用程序并返回设备的主页 .

此功能仅适用于android:

$ionicPlatform.registerBackButtonAction(function () {
            console.log("Not work in WP");
        }, 100);

救命 !!

2 回答

  • 1

    我找到了解决方案 .

    在网站https://www.hoessl.eu/2014/12/on-using-the-ionic-framework-for-windows-phone-8-1-apps/有一个帖子调用 - >尚未修复:返回按钮尚未修复:后退按钮使用Windows Phone 8.0,监听“后退”事件非常简单,就像安卓一样 . 在WP8.1上,不再触发此事件 . 我还没弄明白如何启用它 . 任何提示都将不胜感激 . 但是用户对该解决方案进行了评论 . 遵循我案例中的段落

    后退按钮修复:

    设置$ ionicPlatform.registerBackButtonAction

    $ionicPlatform.registerBackButtonAction(function (evt) {
    if (evt && evt.type == ‘backclick’) {
    $ionicHistory.goBack();
    return true;
    }
    }, 100);
    

    Hookin WinJS并将其发送给Ionic:

    if(ionic.Platform.isWindowsPhone)
    {
    WinJS.Application.onbackclick = function (evt) {
    $ionicPlatform.hardwareBackButtonClick(evt);
    return true;
    }
    }
    

    轻松修复,长时间搞清楚

  • 1

    将代码放在app.js中的示例

    angular.module('starter', ['ionic', 'starter.menu', 'starter.services'])
      .run(function ($ionicPlatform, $ionicHistory, $state, ...) {
    
    $ionicPlatform.registerBackButtonAction(function (evt) {
      if (evt && evt.type == 'backclick') {
        $ionicHistory.goBack();
        return true;
      }
    }, 100);
    
    ...
    $ionicPlatform.ready(function () {
      ...
    
      if (ionic.Platform.isWindowsPhone()) {
        WinJS.Application.onbackclick = function (evt) {
          if ($state.current.name == 'app.home') {
            //function responsible for exiting the application in Windows phone 8.1
            cordova.exec(null, null, "ExitApp", "execute", []);
          } else {
            $ionicPlatform.hardwareBackButtonClick(evt);
            return true;
          }
        }
      }
    });  ...
    
    $stateProvider
      .state('login', {
        url: '/login',
        templateUrl: 'templates/login.html',
        controller: 'LoginCtrl',
        onEnter: function ($state, UserService) {
          console.log("##### - " + UserService.get().isLogged);
          if (UserService.get().isLogged) {
            $state.go("app.home");
          }
        }
      })
      .state('app', {
        url: '/app',
        abstract: true,
        templateUrl: 'templates/menu.html',
        controller: 'MenuCtrl'
    
      })
      .state('app.secretary', {
        url: '/secretary',
        views: {
          'menuContent': {
            templateUrl: 'templates/secretary/menusecretary.html',
            controller: 'MenuSecretaryCtrl'
          }
        }
      })
    

相关问题