从phonegap中的android硬件后退按钮退出应用程序

时间:2014-12-10 07:23:41

标签: android angularjs cordova ionic-framework back-button

当您按下android设备中的硬件后退按钮退出phonegap / ionic应用程序时,有没有办法显示确认弹出窗口?

在当前状态下,我的应用会在点击后退按钮后继续前一个状态。

在应用程序中,无论您在何处按下后退按钮,都有办法退出应用程序吗?

我找到了这段代码,但它似乎不起作用:

$ionicPlatform.registerBackButtonAction(function() {
    var confirmPopup = $ionicPopup.confirm({
        title: 'Sign Out Confirm',
        template: 'Are you sure you want to Logout?'
    });
    confirmPopup.then(function(res) {
        if (res) {
            $rootScope.rootScopeUserTransactionPassword = null;
            $state.go('app.playlists');
        } else {
            console.log('You are not sure');
        }
    });
}, 100);

3 个答案:

答案 0 :(得分:8)

试试这个:

document.addEventListener('backbutton', function(event){
  event.preventDefault(); // EDIT
  navigator.app.exitApp(); // exit the app
});

我希望它可以帮到你。

答案 1 :(得分:2)

它会在退出规定的时间戳之前询问您:再次按下后退按钮退出。如果它是仪表板页面,那么它会询问是否退出? 我希望它能解决你的问题。

.run(function($rootScope, $ionicPlatform, $ionicHistory){
    $ionicPlatform.registerBackButtonAction(function(e) {
            if ($ionicHistory.currentView().stateName == 'dashboard') {
                Dialogs.showConfirm('Do you want to logout?', function(buttonIndex) {
                    if (buttonIndex == 1)
                        User.clear();
                }, 'Logout', ['Yes', 'No']);
            } else

            if ($rootScope.backButtonPressedOnceToExit) {
                ionic.Platform.exitApp();
            } else if ($ionicHistory.backView()) {
                $ionicHistory.goBack();
            } else {
                $rootScope.backButtonPressedOnceToExit = true;
                window.plugins.toast.showShortCenter(
                    "Press back button again to exit",
                    function(a) {},
                    function(b) {}
                );
                setTimeout(function() {
                    $rootScope.backButtonPressedOnceToExit = false;
                }, 2000);
            }
            e.preventDefault();
            return false;
        }, 101);
});

答案 2 :(得分:1)

如果我们在“登录”屏幕上点击Android设备上的按钮,则关闭应用程序。
在你的app.js中,你可能有这样的东西:

app.config(function($stateProvider, $urlRouterProvider, $ionicConfigProvider) {
$stateProvider.state('login', {
    url : '/',
}).state('login', {
    url : '/login',
    views : {
        contentView : {
            templateUrl : 'login.html',
            controller : 'LoginCtrl'
        }
    }
});

所以你要做的就是在同一个文件中添加这个方法:

app.run(function($ionicPlatform) {
    $ionicPlatform.registerBackButtonAction(function() {
        if ($state.current.name == "login") {
            navigator.app.exitApp();
        }
    }, 100);
});

请注意,“登录”app.config

中提到的州名