2017-07-04 55 views
0
I'm able to change the password,pin or Pattern from the below code, on Click function of Switch. 



switchPreferenceAppLock.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
        @Override 
        public boolean onPreferenceChange(Preference preference, Object newValue) { 
         if (!((Boolean) newValue)) { 

         } else { 
          Log.d("Test", "Change to Phone Default Lock"); 

          Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD); 
         startActivity(intent); 
         return true; 
        } 
       }); 
      } 

我的目的是在我的應用程序中使用用戶的手機安全係數(如圖案,PIN,密碼)。就像在我的應用程序中用戶想要執行任何關鍵功能一樣,安全屏幕就會出現並要求進行身份驗證,並且在身份驗證之後,我將允許用戶執行功能。使用DevicePolicyManager在設置屏幕中打開Android應用程序的鎖定屏幕

但它只是用來更改密碼,我想設置它來鎖定手機而不是更改。意圖DevicePolicyManager.ACTION_SET_NEW_PASSWORD只會用於更改密碼。如何設置應用程序鎖定int我的應用程序的相同設置屏幕。

回答

2

在API 21+,您可以使用KeyguardManager.createConfirmDeviceCredentialIntent(...)創建一個新的Intent,將採取用戶在鎖屏,以確認身份,您可以用startActivityForResult(...)開始。下面是啓動鎖屏意圖快速樣品:

KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE) 
boolean isSecure = keyguardManager.isKeyguardSecure(); 

if (isSecure) { 
    Intent intent = keyguardManager.createConfirmDeviceCredentialIntent(null, null); 
    startActivityForResult(intent, YOUR_REQUEST_CODE); 
} else { 
    // no lock screen set, show the new lock needed screen 
} 

然後你檢查結果:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
     case YOUR_REQUEST_CODE: 
      if (resultCode == RESULT_OK) { 
       // user authenticated 
      } else { 
       // user did not authenticate 
      } 
      break; 
     default: 
      super.onActivityResult(requestCode, resultCode, data); 
    } 
} 
相關問題