1 原理
Android存在三种屏幕解锁保护:图案解锁、PIN密码解锁和密码解锁。
其界面分别如下:
图表 1 图案解锁界面
图表 2 PIN密码解锁界面
图表 3 密码解锁界面
我们可以使用ng.Object.android.app.KeyguardManger中的子类KeyguardLock可以控制Disable掉这些屏幕锁界面,从而达到不用输入密码,直接过掉屏幕锁界面来使用手机主要使用KeyguardLock.disableKeyguard()和KeyguardLock.enableKeyguard()方法来Disable、enable屏幕锁界面
2 代码说明
Demo程序主要代码如下:
//获取KeyguardManagerKeyguardManager manager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
If(manager.inKeyguardRestrictedInputMode()){
//处于锁定界面,界面则通过KeyguardLock类方法来解锁
KeyguardLock keyguard = manager.newKeyguardLock(getLocalClassName());
keyguard.disableKeyguard();
}
需要权限:
3 结论
1.图案锁界面使用此方法
调用disableKeyguard() 方法disable图案锁屏界面后,按home键会触发锁屏界面enable重新显示锁屏界面。
2.Pin密码锁界面使用此方法
调用disableKeyguard()方法后disable图案界面后,按home键会出现闪屏。不会返回主页面
3.密码锁界面使用此方法
调用disableKeyguard()方法后disable图案界面后,按home键会出现闪屏。不会返回主页面
虽然不知道Google为什么提供这样一个api,但开发者利用此api几乎就可以使Android的屏幕锁保护功能形同虚设了,而且调用此方法后home键出现的异常现象应该是个bug吧。
4 Demo
由于屏幕锁定时通过电脑上豌豆荚等软件只能安装Apk,并不能启动apk,所以此Demo程序写成了开机启动,即当屏幕锁屏时,通过电脑豌豆荚等软件安装此软件后重启即可实现Pass掉屏幕锁界面。
Android 2.2 ,2.3,4.0平台测试通过。