最近的项目需要做Home键监听,网上查阅了很多资料,感谢那些无私奉献的猿们,下面我就总结下我是如何实现Home键监听的。
android系统:2.3.3
首先在需要监听home键的activity中重写onAttachedToWindow方法:
@Override
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
Log.e(null, "===onAttachedToWindow===");
}
其次重写onKeyDown方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_HOME:
Log.e(null, "onKeyDown-Home");
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
屏蔽 Dialog风格Activity的Home键功能,也需要在你要屏蔽的activity 中重写 onAttachToWindow() 这个函数,但设置window 的值需要改变为 TYPE_KEYGUARD_DIALOG
@Override
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
super.onAttachedToWindow();
}
屏蔽AlertDialog的Home键功能
AlertDialog d = b.create();
d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
AlertDialog d = b.create();
d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
这时候在当前activity中就成功监听了home,我的系统是原生2.3.3,不知道其它系统中使用会有什么样的结果...
android的home应用,可以在AndroidManifest.xml文件中声明:
<category android:name="android.intent.category.HOME"/>