屏幕解鎖方式一:
這種方式是目前用的比較多的方式,使用KeyguardManager 的方式來解鎖,使用這種方式比較簡便一點,但是也有一點不好的地方,它用在程序中,當程序退出機器重啟後,這種效果就沒有了,達不到長久解鎖的效果.
KeyguardManager的應用:
KeyguardManager Manger = (KeyguardManager)getSystemService(KEYGUARD_SERVICE); KeyguardLock mLock = Manager.newKeyguardLock("unlock"); mLock.disableKeyguard();
使用完成後要對它進行:
mLock.reenableKeyguard();
使用keyguardManager要在manifest中添加:
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
屏幕解鎖方式二:
使用這種方式,可能覺得比較麻煩一點.它來源于google的setting源碼,跟椐鎖屏的那部分源碼更改過來的,跟椐本人的實驗可行.它的好處就是它能從根本上解決鎖屏的問題.直接把目前的鎖屏方式改為none的模式;在這種情況下,不管機器重啟還是退出程序,機器都不會再鎖屏了.它的不好的地方就是因為來源于源碼,所以要在源碼中進行編譯,直接使用會出錯的情況.
下面是代碼:
private void updateUnlockMethodAndFinish(int quality, boolean disabled) { // TODO Auto-generated method stub int minQuality = mDevicePolicyManager.getPasswordQuality(null); if (quality < minQuality) { quality = minQuality; } quality = upgradeQualityForEncryption(quality); if (quality >= DevicePolicyManager.PASSWORD_QUALITY_NUMERIC) { } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { mLockPatternUtils.clearLock(true); mLockPatternUtils.setLockScreenDisabled(disabled); } } private int upgradeQualityForEncryption(int quality) { int encryptionStatus = mDevicePolicyManager.getStorageEncryptionStatus(); boolean encrypted = (encryptionStatus == DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE) || (encryptionStatus == DevicePolicyManager.ENCRYPTION_STATUS_ACTIVATING); if (encrypted) { if (quality < DevicePolicyManager.PASSWORD_QUALITY_NUMERIC) { quality = DevicePolicyManager.PASSWORD_QUALITY_NUMERIC; } } return quality; }
使用這種方式,要獲取系統權限:
android.uid.system