[Android]完美屏蔽Home键

先声明一下,此方法仅仅适用于源码环境,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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值