android4.0以下 可用
privatebooleancatchHomeKey = false;
public void onAttachedToWindow()
{
if (!catchHomeKey) {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
super.onAttachedToWindow();
} 然后再在
onKeyDown方法中捕获
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_HOME) {
Toast.makeText(this, "你点击了HOME键", Toast.LENGTH_LONG).show();
}
return super.onKeyDown(keyCode, event);
}
还需要加权限
<uses-permissionandroid:name="android.permission.SYSTEM_ALERT_WINDOW"/>
然而对于4.0以上的 我也没有找到方法,不过因为我的要求不是很复杂 通过曲线方式实现
根据activity的声明周期 当按下Home键时 会依此执行onPause()->onStop()方法,并没有将activity销毁 当再次打开activity时会依此执行onRestart()->onStart()->onResume()方法,所以我只需要将我的操作放在onPause()方法中就可以了,