最近研究锁屏,按照常规的方法,常规方法如下
public void onAttachedToWindow()
{
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
但是这个方法到了4.0的系统上就失效了,按home照样会返回桌面。apktool了几个锁屏的软件之后发现其实现方法,即用WindowManager的addview方法将view加到窗口上,加上的时候将view的layoutparamas的type设为LayoutParams.TYPE_SYSTEM_ERROR,这个值sdk的解释为
public static final int TYPE_SYSTEM_ERROR
Since: API Level 1
Window type: internal system error windows, appear on top of everything they can.
如果直接这样用会报错,还要在AndroidManifest.xml里面加上权限<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>,ok上完整代码,封装了一个类,其中Lock和hide方法实现锁屏和解锁。
public class LockLayer {
private Activity mActivty;
private WindowManager mWindowManager;
private View mLockView;
private LayoutParams mLockViewLayoutParams;
public LockLayer(Activity act) {
mActivty = act;
init();
}
private void init(){
mWindowManager = mActivty.getWindowManager();
mLockViewLayoutParams = new LayoutParams();
mLockViewLayoutParams.width = LayoutParams.MATCH_PARENT;
mLockViewLayoutParams.height = LayoutParams.MATCH_PARENT;
//实现关键
mLockViewLayoutParams.type = LayoutParams.TYPE_SYSTEM_ERROR;
//apktool value,这个值具体是哪个变量还请网友帮忙
mLockViewLayoutParams.flags = 1280;
}
public void lock() {
if(mLockView!=null){
mWindowManager.addView(mLockView, mLockViewLayoutParams);
}
}
public void unlock() {
if(mWindowManager!=null){
mWindowManager.removeView(mLockView);
}
}
public void setLockView(View v){
mLockView = v;
}
}
分享到:
相关推荐
android4.0屏蔽home键实现.pdf
实现了针对android 4.0系统以上屏蔽home键的效果
由于android4.0和2.x上的屏幕管理不一样,2.x上的屏蔽方法在4.0上会失效,使用一中新的方法来屏蔽4.0上的Home键。
不如测试真机版本为:android 4.12
针对android 4.0系统以下屏蔽home键的功能,简单易学,凑点字。
主要介绍了android4.0屏蔽HOME键的简单实现,需要的朋友可以参考下
主要介绍了Android4.0.x Home键事件拦截监听的方法,对比分析了2.3.x的实现方法,分析了4.0.x实现Home键事件拦截监听的相关技巧,需要的朋友可以参考下
文档高清自主研发非最终版。 一直想要整理一下keyguard(锁屏)模块的相关流程,由于各种原因总是没真正着手开始做,一直拖也不是个办法,所以就索性开始了。 这篇内容会比较偏分析,所以闲话就少扯点了。...
实测可行的Android 4.x锁屏屏蔽HOME键的Demo。在模拟器跟2.3系统的三星手机跟4.1系统的小米手机上测试均有效。
我的毕业设计,加毕业论文,主要是针对android2.3的手势与振动解锁,屏蔽home键只是做了2.3的 要是想找4.0的屏蔽home键的就别下了。主要是手势与振动解锁,给大家参考一下
当然另外一个很重要的问题就是home按键的屏蔽问题,当然这个是解决了,主要是用的的那个locklayer的东西,这个问题当然是有限制的,首先你要申请权限,4.0 & 4.1 中你申请了权限就可以直接用了,但是4.2以上就有了...