捕获android中的Home key
16lz
2021-01-24
一 .覆盖 dispatchKeyEvent
dispatchKeyEvent(KeyEvent e) 返回值为 true则点击“返回” 按键的时候不销毁当前Activity。可以进行其他操作
二 覆盖onKeyDown
在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK )就能关闭程序,其实大多情况下该应用还在任务里运行着,其实这不是我们想要的结果。
我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动作),我们在onDestroy() 里强制退出应用,或直接杀死进程,具体操作代码如下:
//捕获按下键盘上返回按钮
dispatchKeyEvent(KeyEvent e) 返回值为 true则点击“返回” 按键的时候不销毁当前Activity。可以进行其他操作
public boolean dispatchKeyEvent(KeyEvent e) { if (e.getKeyCode() == KeyEvent.KEYCODE_BACK && e.getAction() == KeyEvent.ACTION_UP) { this.onClick(null); } return true; }public void onClick(View v) { if (isok != 1) { // Toast.makeText(this, "正在取消 ...", Toast.LENGTH_SHORT).show(); SynDataProgressAct.getdefault().tmer.cancel(); sync.getdefault().SetCancle(); this.sendMessage(2, sync.getdefault().STRING_C_CANCELING); } else { this.finish(); } }
二 覆盖onKeyDown
在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK )就能关闭程序,其实大多情况下该应用还在任务里运行着,其实这不是我们想要的结果。
我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动作),我们在onDestroy() 里强制退出应用,或直接杀死进程,具体操作代码如下:
//捕获按下键盘上返回按钮
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { new AlertDialog.Builder(this) // .setIcon(R.drawable.services) .setTitle(R.string.prompt) .setMessage(R.string.quit_msg) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { finish(); } }).show(); return true; } else { return super.onKeyDown(keyCode, event); } } //彻底退出程序 @Override protected void onDestroy() { super.onDestroy(); System.exit(0); // 或者下面这种方式 // android.os.Process.killProcess(android.os.Process.myPid()); }
更多相关文章
- Android(安卓)屏幕保护程序制作及源码
- Android(安卓)Activity中ActionBar上添加返回功能
- Android(安卓)Permission denied 错误 ( 附Android权限大全 )
- Android(安卓)APK加壳技术方案【2】
- Android2.2的camera应用程序中支持双camera切换(二)
- android 摄像头对焦,zoom的通知事件回调,告诉java应用层已经对焦完
- Android中退出程序的提示框及完全退出
- android中 onResume()方法什么时候执行?
- Android(安卓)Exception No such table android_metadata