当用户按下android phonegap上的菜单按钮时如何退出应用程序

时间:2013-07-04 09:26:13

标签: android html5 cordova

世界各地的Android应用开发者,

我是Android应用程序开发的新手。如何覆盖菜单按钮,以便当用户按下菜单按钮时,会弹出并退出按钮以退出应用程序。

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

似乎没有人关心您在问题上标记cordovahtml5!在onDeviceReady事件中,您将听众设置为菜单按钮并调用navigator.app.exitApp()

function onDeviceReady(){
   document.addEventListener("menubutton", closeApp, false);
} 

function closeApp(){
   navigator.app.exitApp();
} 

请注意,虽然其他答案实际上没有回答您的问题,但他们有重要信息:

  • 并非所有设备都有菜单按钮。
  • 请务必通知用户您正在关闭应用,Adrien显示对话框的方法非常标准且非常好。
  • 如果您尝试发布具有iOS关闭按钮的应用您的应用程序可能会被拒绝

答案 1 :(得分:0)

像这样: 修改

public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
    // Create your alertDialog
        new AlertDialog.Builder(this)
    .setTitle("Exit ?")
    .setMessage("Are you sure you want to exit?")
    .setNegativeButton(android.R.string.no, null)
    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface arg0, int arg1) {
            //Destroy your current activities
    Intent i = getBaseContext().getPackageManager()
                    .getLaunchIntentForPackage(   getBaseContext().getPackageName() );
            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(i);
        }
    }).create().show();
    return true;
}
return super.onKeyUp(keyCode, event);
}

希望这个帮助

答案 2 :(得分:0)

  1. 不推荐使用菜单按钮! (自从4开始)
  2. 不要以编程方式退出App。让android系统管理应用程序生命周期!无需退出应用程序。实际上,您将破坏Multitasking App上下文切换(这是Android与iOS相比的强大功能)。因此,用户无法返回当前的应用状态(屏幕/数据等),因为应用程序将全新启动,用户必须导航到之前的位置等。

答案 3 :(得分:0)

Android的设计不赞成选择退出应用程序,而是通过操作系统管理它。您可以通过相应的Intent:

调出Home应用程序
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_MENU)) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Do you want to Exit?").setCancelable(true)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    Intent intent = new Intent(Intent.ACTION_MAIN);
                    intent.addCategory(Intent.CATEGORY_HOME);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                }
            });
              .setNegativeButton("OK", new DialogInterface.OnClickListener() {
                  dialog.dismiss();
                });
    AlertDialog alert = builder.create();
    alert.show();
    }
    return true;
}