我试着听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
答案 0 :(得分:3)
更新:我不再使用它,因为它不可靠。此外,在最新的Ionic版本中,app.ts现在是app.component.ts。
对于Ionic 2,请查看我的博客文章,了解如何解决此问题。也应该适用于Ionic 1,因为它只是叫一个科尔多瓦听众:
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)在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编译而没有错误。
希望这可以帮助任何人解决这个问题。
干杯。
答案 1 :(得分:1)
可能会对你有帮助。
$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);