1 原理
Android存在三種屏幕解鎖保護:圖案解鎖、PIN密碼解鎖和密碼解鎖。
其界面分別如下:
圖表 1 圖案解鎖界面
圖表 2 PIN密碼解鎖界面
圖表 3 密碼解鎖界面
我們可以使用java.lang.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平台測試通過。