bogongjie 发表于 2013-1-30 04:01:18

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
页: [1]
查看完整版本: android 屏幕解鎖方式