Android 4.2.2在应用中截获home键

现在通用的截获home的方法在4.0.3、4.0.4、4.2.2中就不行了,下面是我试过一种在4.2.2中可行,但在4.0.4中确不行的方法,希望能帮助大家!

经在4.2.2.中测试,仅依靠以下两句,即可在应用中对home键进行屏蔽:

定义:private static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000;

在Activity的onCreate中增加一句:
this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);




private static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000;

//是否截获home:true-->截获,false-->不截获
private boolean disableHomeFlag = true;


在onCreate设置,此时home被拦截:
this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);

如果需要判断是否取消home的截获,要在onKeyDown中做:
  public boolean onKeyDown(int keyCode, KeyEvent event) {
       switch(keyCode) {
             case KeyEvent.KEYCODE_HOME:
              if(!disableHomeFlag ){
                  //不截获home,清除Flag
                  this.getWindow().clearFlags(FLAG_HOMEKEY_DISPATCHED);               
               }
                  break
              default:
                     break;
         }
        return super.onKeyDown(keyCode, event);
    }

如果想要弹个提示框给用户,确定是否执行home,可以在onKeyUp中做处理:
public boolean onKeyUp (int keyCode, KeyEvent event) {
       switch(keyCode) {
             case KeyEvent.KEYCODE_HOME:
                   //弹个提示框:1、确定home;2、取消home
                  break
              default:
                     break;
         }
        return super.onKeyUp(keyCode, event);
    }

1、确定要执行home:
this.getWindow().clearFlags(FLAG_HOMEKEY_DISPATCHED);//清除flag,取消对home的截获
  //执行home
   Intent intent= new Intent(Intent.ACTION_MAIN);
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
   intent.addCategory(Intent.CATEGORY_HOME);
   startActivity(intent);

2、取消执行home
   不需要做什么操作,home已经被截获了。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值