diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java index 5eb17b2db0f..edd59af818d 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/ChooseLockGeneric.java @@ -206,7 +206,11 @@ public class ChooseLockGeneric extends SettingsActivity { } else if (!mWaitingForConfirmation) { ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this.getActivity(), this); - if (!helper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST, + boolean managedProfileWithUnifiedLock = Utils + .isManagedProfile(UserManager.get(getActivity()), mUserId) + && !mLockPatternUtils.isSeparateProfileChallengeEnabled(mUserId); + if (managedProfileWithUnifiedLock + || !helper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST, getString(R.string.unlock_set_unlock_launch_picker_title), true, mUserId)) { mPasswordConfirmed = true; // no password set, so no need to confirm updatePreferencesOrFinish(); @@ -592,7 +596,7 @@ public class ChooseLockGeneric extends SettingsActivity { } if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { - mLockPatternUtils.setSeparateProfileChallengeEnabled(mUserId, true); + mLockPatternUtils.setSeparateProfileChallengeEnabled(mUserId, true, mUserPassword); mChooseLockSettingsHelper.utils().clearLock(mUserId); mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled, mUserId); removeAllFingerprintTemplatesAndFinish(); diff --git a/src/com/android/settings/SaveChosenLockWorkerBase.java b/src/com/android/settings/SaveChosenLockWorkerBase.java index 39620d59e29..7ce7a9064b7 100644 --- a/src/com/android/settings/SaveChosenLockWorkerBase.java +++ b/src/com/android/settings/SaveChosenLockWorkerBase.java @@ -68,7 +68,6 @@ abstract class SaveChosenLockWorkerBase extends Fragment { mHasChallenge = hasChallenge; mChallenge = challenge; // This will be a no-op for non managed profiles. - mUtils.setSeparateProfileChallengeEnabled(mUserId, true); mWasSecureBefore = mUtils.isSecure(mUserId); Context context = getContext(); diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index 32cd348c15b..c1b7c6c7c89 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -697,8 +697,8 @@ public class SecuritySettings extends SettingsPreferenceFragment private void unifyLocks() { int profileQuality = mLockPatternUtils.getKeyguardStoredPasswordQuality(mProfileChallengeUserId); - mLockPatternUtils.clearLock(mProfileChallengeUserId); - mLockPatternUtils.setSeparateProfileChallengeEnabled(mProfileChallengeUserId, false); + mLockPatternUtils.setSeparateProfileChallengeEnabled(mProfileChallengeUserId, false, + mCurrentProfilePassword); if (profileQuality == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) { mLockPatternUtils.saveLockPattern( LockPatternUtils.stringToPattern(mCurrentProfilePassword), @@ -716,14 +716,13 @@ public class SecuritySettings extends SettingsPreferenceFragment } private void unifyUncompliantLocks() { - mLockPatternUtils.clearLock(mProfileChallengeUserId); - mLockPatternUtils.setSeparateProfileChallengeEnabled(mProfileChallengeUserId, false); + mLockPatternUtils.setSeparateProfileChallengeEnabled(mProfileChallengeUserId, false, + mCurrentProfilePassword); startFragment(this, "com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment", R.string.lock_settings_picker_title, SET_OR_CHANGE_LOCK_METHOD_REQUEST, null); } private void ununifyLocks() { - mLockPatternUtils.setSeparateProfileChallengeEnabled(mProfileChallengeUserId, true); Bundle extras = new Bundle(); extras.putInt(Intent.EXTRA_USER_ID, mProfileChallengeUserId); startFragment(this,