Added support for DO_NOT_ASK_CREDENTIALS_ON_BOOT DPM flag

When DO_NOT_ASK_CREDENTIALS_ON_BOOT flag is set in
DevicePolicyManager, the Settings UI:
1) Should not encrypt the device with password when the
   user encrypts the device for the first time. The default
   encryption type should be used instead.
2) Should not give the choice to the user whether to
   encrypt the device with password/PIN or not but always
   encrypt the device without password.

Related CL: https://googleplex-android-review.git.corp.google.com/#/c/665371/

Change-Id: Ic09f02c033a0b16b7ffc45bf6d675b62d1be4bd8
This commit is contained in:
Andrei Kapishnikov
2015-04-09 11:08:16 -04:00
parent 02c89944d1
commit 146fc11958
2 changed files with 19 additions and 3 deletions

View File

@@ -189,7 +189,9 @@ public class ChooseLockGeneric extends SettingsActivity {
// TODO: why does this take disabled, its always called with a quality higher than // TODO: why does this take disabled, its always called with a quality higher than
// what makes sense with disabled == true // what makes sense with disabled == true
private void maybeEnableEncryption(int quality, boolean disabled) { private void maybeEnableEncryption(int quality, boolean disabled) {
if (Process.myUserHandle().isOwner() && LockPatternUtils.isDeviceEncryptionEnabled()) { DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
if (Process.myUserHandle().isOwner() && LockPatternUtils.isDeviceEncryptionEnabled()
&& !dpm.getDoNotAskCredentialsOnBoot()) {
mEncryptionRequestQuality = quality; mEncryptionRequestQuality = quality;
mEncryptionRequestDisabled = disabled; mEncryptionRequestDisabled = disabled;
final Context context = getActivity(); final Context context = getActivity();

View File

@@ -39,6 +39,8 @@ import com.android.internal.logging.MetricsLogger;
public class CryptKeeperSettings extends InstrumentedFragment { public class CryptKeeperSettings extends InstrumentedFragment {
private static final String TAG = "CryptKeeper"; private static final String TAG = "CryptKeeper";
private static final String TYPE = "type";
private static final String PASSWORD = "password";
private static final int KEYGUARD_REQUEST = 55; private static final int KEYGUARD_REQUEST = 55;
@@ -194,8 +196,20 @@ public class CryptKeeperSettings extends InstrumentedFragment {
Preference preference = new Preference(getActivity()); Preference preference = new Preference(getActivity());
preference.setFragment(CryptKeeperConfirm.class.getName()); preference.setFragment(CryptKeeperConfirm.class.getName());
preference.setTitle(R.string.crypt_keeper_confirm_title); preference.setTitle(R.string.crypt_keeper_confirm_title);
preference.getExtras().putInt("type", type); addEncryptionInfoToPreference(preference, type, password);
preference.getExtras().putString("password", password);
((SettingsActivity) getActivity()).onPreferenceStartFragment(null, preference); ((SettingsActivity) getActivity()).onPreferenceStartFragment(null, preference);
} }
private void addEncryptionInfoToPreference(Preference preference, int type, String password) {
Activity activity = getActivity();
DevicePolicyManager dpm = (DevicePolicyManager)
activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
if (dpm.getDoNotAskCredentialsOnBoot()) {
preference.getExtras().putInt(TYPE, StorageManager.CRYPT_TYPE_DEFAULT);
preference.getExtras().putString(PASSWORD, "");
} else {
preference.getExtras().putInt(TYPE, type);
preference.getExtras().putString(PASSWORD, password);
}
}
} }