From 2bb62380449da124cd36fac80d6072ad6c4d0592 Mon Sep 17 00:00:00 2001 From: Maurice Lam Date: Tue, 15 Aug 2017 16:26:05 -0700 Subject: [PATCH] Don't launch Choose Lock again if recreating When ChooseLockGeneric is recreated, don't automatically launch ChooseLock[Password/Pattern] even if the corresponding intent extras are specified, because one would have been launched in the previous onCreate. Test: Manual Bug: 64605627 Change-Id: I227a14abb2f4dd6c4577186a3d8164df0bec7791 --- .../android/settings/password/ChooseLockGeneric.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/password/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java index 4d20bcfd246..5126727bbe9 100644 --- a/src/com/android/settings/password/ChooseLockGeneric.java +++ b/src/com/android/settings/password/ChooseLockGeneric.java @@ -219,7 +219,7 @@ public class ChooseLockGeneric extends SettingsActivity { mManagedPasswordProvider = ManagedLockPasswordProvider.get(getActivity(), mUserId); if (mPasswordConfirmed) { - updatePreferencesOrFinish(); + updatePreferencesOrFinish(savedInstanceState != null); if (mForChangeCredRequiredForBoot) { maybeEnableEncryption(mLockPatternUtils.getKeyguardStoredPasswordQuality( mUserId), false); @@ -234,7 +234,7 @@ public class ChooseLockGeneric extends SettingsActivity { || !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(); + updatePreferencesOrFinish(savedInstanceState != null); } else { mWaitingForConfirmation = true; } @@ -332,7 +332,7 @@ public class ChooseLockGeneric extends SettingsActivity { if (requestCode == CONFIRM_EXISTING_REQUEST && resultCode == Activity.RESULT_OK) { mPasswordConfirmed = true; mUserPassword = data.getStringExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD); - updatePreferencesOrFinish(); + updatePreferencesOrFinish(false /* isRecreatingActivity */); if (mForChangeCredRequiredForBoot) { if (!TextUtils.isEmpty(mUserPassword)) { maybeEnableEncryption( @@ -395,7 +395,7 @@ public class ChooseLockGeneric extends SettingsActivity { outState.putBoolean(ENCRYPT_REQUESTED_DISABLED, mEncryptionRequestDisabled); } - private void updatePreferencesOrFinish() { + private void updatePreferencesOrFinish(boolean isRecreatingActivity) { Intent intent = getActivity().getIntent(); int quality = intent.getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY, -1); if (quality == -1) { @@ -413,7 +413,8 @@ public class ChooseLockGeneric extends SettingsActivity { updatePreferenceText(); updateCurrentPreference(); updatePreferenceSummaryIfNeeded(); - } else { + } else if (!isRecreatingActivity) { + // Don't start the activity again if we are recreated for configuration change updateUnlockMethodAndFinish(quality, false, true /* chooseLockSkipped */); } }