Ionic - 禁用Windows Phone 8.1中的硬件后门按钮

时间:2015-12-09 20:49:56

标签: android visual-studio windows-phone ionic-framework

我正在开发使用IONIC框架。我在硬件后退按钮上遇到了麻烦。

在android中,硬件后退按钮工作正常,但Windows手机无法正常工作。 当我使用Windows手机上的后退按钮时,最小化应用程序并返回设备的主页。

此功能仅适用于android:

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

帮助!!

2 个答案:

答案 0 :(得分: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 :(得分: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'
      }
    }
  })