先声明一下,此方法仅仅适用于源码环境,apk开发的请绕道哦。
一、修改
修改文件:PhoneWindowManager.java
修改路径:frameworks/base/policy/src/com/android/internal/policy/impl
修改方法:
在interceptKeyBeforeDispatching中添加在注释中间加的那2个行
if (attrs != null) {
final int type = attrs.type;
// add by y.haiyang@outlook.com(start)
final int homeKeyFlag = flag & WindowManager.LayoutParams.FLAG_DISMISS_HOME_KEY;
// add by y.haiyang@outlook.com(end)
if (type == WindowManager.LayoutParams.TYPE_KEYGUARD
|| type == WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG)
// add by y.haiyang@outlook.com(start)
|| homeKeyFlag == WindowManager.LayoutParams.FLAG_DISMISS_HOME_KEY) {
// add by y.haiyang@outlook.com(end)
// the "app" is keyguard, so give it the key
return 0;
}
.......
.....
二、应用
应用的时候也很简单,在Activity onCreate 的时候进行add一下 咱刚刚添加的flag就行
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_HOME_KEY);
setContentView(R.layout.mainkey);
三、说明
1. WindowManager.LayoutParams.FLAG_DISMISS_HOME_KEY; 这个值 自己去加一下就行
2. 网上还有一种方法说重新添加一下onAttachedToWindow 这个方法就行(还要注意加权限)但是我用起来一直报错,不知道怎么个情况。
@Override
public void onAttachedToWindow()
{
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
super.onAttachedToWindow();
}
3. 担心某些人还是不懂修改那些,现在贴上修改文件的前后比较。
====================关注小鱼===================
新浪微博:http://weibo.com/AwareMissing
腾讯微博:http://t.qq.com/y_haiyang