android 屏幕解鎖方式

屏幕解鎖方式一:

這種方式是目前用的比較多的方式,使用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

你可能感兴趣的:(android)