Android如何屏蔽home键和recent键

Android如何屏蔽home键和recent键,第1张

概述最近在做一个项目的时候,进入一个Activity后需要暂时屏蔽掉home键和recent键(back键可以在onKeyDown里面处理),网上找了半天,都是针对旧版本android的方法,android5.0以后就不能生效了。 看了半天的SDK和资料,发现有一种方法可以暂时屏蔽掉home键和recent键,如果有办法获取到高级的系

最近在做一个项目的时候,进入一个 Activity后需要暂时屏蔽掉home键和recent键(back键可以在onKeyDown里面处理),网上找了半天,都是针对旧版本androID的方法,androID5.0以后就不能生效了。

 

看了半天的SDK和资料,发现有一种方法可以暂时屏蔽掉home键和recent键,如果有办法获取到高级的系统权限,还可以正在的屏蔽掉。废话不多说,直接上代码:

其实代码就一句话:startLockTask,整段代码如下:


package utils.bobo.com.boboutils.App;

import androID.app.Activity;
import androID.os.Bundle;
import androID.vIEw.KeyEvent;

import utils.bobo.com.boboutils.R;

public class ScreenPinningActivity extends Activity {

@OverrIDe
protected voID onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentVIEw(R.layout.activity_screen_pinning);
}
@OverrIDe
public voID onResume(){
super.onResume();
this.startLockTask();
}
@OverrIDe
public boolean onKeyDown(int keyCode,KeyEvent event){
if(keyCode==KeyEvent.KEYCODE_BACK)
return true;
return super.onKeyDown(keyCode, event);
}
}

启动后,会出现如下图的提示,用户点击知道了,home键和recent键就被屏蔽掉了,只有长按back键才能解除这个状态:


再来说说高级的接口,这个高级的接口需要androID.permission.STATUS_bar的permission,这个permission定义如下:

    <permission androID:name="androID.permission.STATUS_bar"
        androID:protectionLevel="signature|privileged" />

这个定义决定了你的apk必须是platform签名或者预制在system/priv-app下,

所以这个方法对普通的开发者无效,但是如果你是做rom的,就可以采用这个方法。代码也很简单,这边就不贴完整代码了


mStatusbarManager = (StatusbarManager) getApplicationContext()
.getSystemService(Context.STATUS_bar_SERVICE);
mStatusbarManager.disable(StatusbarManager.disABLE_HOME | StatusbarManager.disABLE_RECENT | StatusbarManager.disABLE_EXPAND);
在activity 退出的时候要执行下

mStatusbarManager.disable(StatusbarManager.disABLE_NONE);
恢复home键和recent键

其实还有一种比较流氓的方法:

就是不用activity实现,而是添加一个TYPE_SYstem_ALERT的vIEw到window上,这个网上的代码也挺多的,这边贴小部分代码,有兴趣的同学自己再去百度下


WindowManager wm = (WindowManager)getApplicationContext().getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams();

params.type = WindowManager.LayoutParams.TYPE_SYstem_ALERT | WindowManager.LayoutParams.TYPE_SYstem_OVERLAY;
params.flags = LayoutParams.FLAG_NOT_FOCUSABLE;

params.wIDth = WindowManager.LayoutParams.FILL_PARENT;
params.height = WindowManager.LayoutParams.FILL_PARENT;
params.format = PixelFormat.transparent;

params.gravity=Gravity.left|Gravity.top;
params.x = 0;
params.y = 0;
wm.addVIEw(mVIEw, params);

源代码可以从 https://github.com/bobohuang1985/androID-utils-API 下载,
————————————————
版权声明:本文为CSDN博主「zhenbohuang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhenbohuang/article/details/72722247

总结

以上是内存溢出为你收集整理的Android如何屏蔽home键和recent键全部内容,希望文章能够帮你解决Android如何屏蔽home键和recent键所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1070093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存