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平台測試通過。