4.0以上系统锁屏类应用禁用home键

最近做了一款锁屏类应用,但是现在都是4.0以上系统,home键的禁用不能和返回键禁用那样处理,网上找了好多答案,大多数是让改sdk,但是那不是第三方应用能实现的,又去github上找了几个demo,最后找到了能实现类似功能的app,网址列在下面

https://github.com/tanhuopeng/classLock

他的大概思路是,把你锁屏的界面添加到WindowManager的顶层,代码如下

private WindowManager wm;
private ViewGroup mViewContent;

在oncreate里面:

mViewContent = (ViewGroup) View.inflate(this, R.layout.main, null);
wm = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);
generateLayoutParams(wm, mViewContent,getResources().getDisplayMetrics().widthPixels, getResources().getDisplayMetrics().heightPixels);

generateLayoutParams方法如下


public static WindowManager.LayoutParams generateLayoutParams(WindowManager wm, ViewGroup viewgroup, int width, int height){
   WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();
   wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
   wmParams.format = PixelFormat.OPAQUE;
   wmParams.flags = WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
         | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR;
   wmParams.width = width;
   wmParams.height = height;
   wm.addView(viewgroup, wmParams);
   return wmParams;
}

然后在layout:main里面又一个button

Button button = (Button)mViewContent.findViewById(R.id.button);
注意(button)后面是mViewContent,因为这个button是在mViewContent里面的,而这个activity的layout可以不是main,两个可以不同,切记。

然后设置button的点击方法,里面的内容很简单,只是把activity,finish掉就ok,然后重写onDestroy:

@Override
protected void onDestroy() {
   super.onDestroy();
   if (wm != null) {
      wm.removeView(mViewContent);
   }
}
即,在该activity销毁的时候,移除我们加在WindowManager里的mViewContent,这样就实现了类似禁用home键的功能。

至于监听锁屏状态打开activity等功能,网上很多,在这里不赘述。

注意:国内小米手机,默认是关闭悬浮窗的,所以这种方法会失效,解决办法就是提醒用户打开该应用悬浮窗权限。

转载请注明出处


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值