@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// 确认对话框
final AlertDialog isExit = new AlertDialog.Builder(this).create();
// 对话框标题
isExit.setTitle("系统提示");
// 对话框消息
isExit.setMessage("确定要退出吗");
// 实例化对话框上的按钮点击事件监听
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case AlertDialog.BUTTON1:// "确认"按钮退出程序
//finish();原来用的finish,后来发现finishe不能完全退出
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
break;
case AlertDialog.BUTTON2:// "取消"第二个按钮取消对话框
isExit.cancel();
break;
default:
break;
}
}
};
// 注册监听
isExit.setButton("确定", listener);
isExit.setButton2("取消", listener);
// 显示对话框
isExit.show();
return false;
}
return false;
}
注:用 ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());可以完全退出,注意在AndroidManifest.xml文件里设置:
<uses-permission android:name="android.permission.RESTART_PACKAGES"></uses-permission>