我现在的项目里面,有个调用系统摄像头进行拍照的页面,但是现在要求要屏蔽home键,网上都是重写了onAttachToWindow()方法,然后设置 this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);程序运行后,就悲剧了,摄像头一片漆黑,把设置的那句代码注释掉,摄像头是正常的,可是就不能屏蔽home键了,纠结啊!PS:我的Android系统是自己人写的,可以实现屏蔽home键的功能,最大的问题就是屏蔽home键的功能和摄像头的冲突问题,求大神解惑!
------解决方案--------------------
之前我也研究过以下这个问题。
onAttachToWindow()这个方法没记错的话好像只是2.3及以下吧。
4.0以后貌似没有好用的方法屏蔽home键。
在framework下的 PhoneWindowManager.java下这个地方是home键的处理。
@Override
public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) {
...
// First we always handle the home key here, so applications
// can never break it, although if keyguard is on, we do let
// it handle it, because that gives us the correct 5 second
// timeout.
if (keyCode == KeyEvent.KEYCODE_HOME) {
...
}
}
这里可以在线浏览:
https://android.googlesource.com/platform/frameworks/base/+/7d276c377ce0c56630c06a6da431a6cb9bd76d1e/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java