From 77181e947860056fb77d24ab9fa9e86365b244e6 Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Thu, 25 Feb 2016 15:43:24 -0800 Subject: [PATCH] Fix crash when changing encrypt with credential Bug: 27173979 Change-Id: If8ef7a9342bcb1b0602791df1dc7634b3e980ee7 --- src/com/android/settings/ChooseLockGeneric.java | 2 +- src/com/android/settings/SaveChosenLockWorkerBase.java | 6 +++++- src/com/android/settings/SecuritySettings.java | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java index 2592e830790..4dde3409de4 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/ChooseLockGeneric.java @@ -292,7 +292,7 @@ public class ChooseLockGeneric extends SettingsActivity { } } else if (requestCode == CHOOSE_LOCK_REQUEST || requestCode == ENABLE_ENCRYPTION_REQUEST) { - if (resultCode != RESULT_CANCELED) { + if (resultCode != RESULT_CANCELED || mForChangeCredRequiredForBoot) { getActivity().setResult(resultCode, data); finish(); } diff --git a/src/com/android/settings/SaveChosenLockWorkerBase.java b/src/com/android/settings/SaveChosenLockWorkerBase.java index 128bd998120..39620d59e29 100644 --- a/src/com/android/settings/SaveChosenLockWorkerBase.java +++ b/src/com/android/settings/SaveChosenLockWorkerBase.java @@ -17,6 +17,7 @@ package com.android.settings; import android.app.Fragment; +import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; @@ -70,7 +71,10 @@ abstract class SaveChosenLockWorkerBase extends Fragment { mUtils.setSeparateProfileChallengeEnabled(mUserId, true); mWasSecureBefore = mUtils.isSecure(mUserId); - if (UserManager.get(getContext()).getUserInfo(mUserId).isPrimary()) { + Context context = getContext(); + // If context is null, we're being invoked to change the setCredentialRequiredToDecrypt, + // and we made sure that this is the primary user already. + if (context == null || UserManager.get(context).getUserInfo(mUserId).isPrimary()) { mUtils.setCredentialRequiredToDecrypt(credentialRequired); } diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index 84644623fc8..896697414bd 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -1054,6 +1054,7 @@ public class SecuritySettings extends SettingsPreferenceFragment static boolean canChangeRequireCredentialBeforeStartup(Context context) { DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class); return UserManager.get(context).isAdminUser() + && UserManager.get(context).isPrimaryUser() && LockPatternUtils.isDeviceEncryptionEnabled() && !dpm.getDoNotAskCredentialsOnBoot(); }