From 22135ea7739433802fa55a37790c2a931b698f30 Mon Sep 17 00:00:00 2001 From: Yongwei Cai Date: Tue, 7 Sep 2010 13:52:42 +0200 Subject: [PATCH] Fix wrong behavior when changing pin code in settings In security setting, if user change orientation during entering pin code, the change will not apply successfully, it is because the entered pin codes has not been saved and restored when application was re-create after changed orientation. So we save entered pin codes and restore them in onCreate when application is re-created. Change-Id: Ia8a3fb3ee75185ce028104487377e47f272905ce --- src/com/android/settings/IccLockSettings.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java index 64945677623..0df69a01d7d 100644 --- a/src/com/android/settings/IccLockSettings.java +++ b/src/com/android/settings/IccLockSettings.java @@ -61,6 +61,11 @@ public class IccLockSettings extends PreferenceActivity private static final String DIALOG_PIN = "dialogPin"; private static final String DIALOG_ERROR = "dialogError"; private static final String ENABLE_TO_STATE = "enableState"; + + // Save and restore inputted PIN code when configuration changed + // (ex. portrait<-->landscape) during change PIN code + private static final String OLD_PINCODE = "oldPinCode"; + private static final String NEW_PINCODE = "newPinCode"; private static final int MIN_PIN_LENGTH = 4; private static final int MAX_PIN_LENGTH = 8; @@ -133,6 +138,23 @@ public class IccLockSettings extends PreferenceActivity mPin = savedInstanceState.getString(DIALOG_PIN); mError = savedInstanceState.getString(DIALOG_ERROR); mToState = savedInstanceState.getBoolean(ENABLE_TO_STATE); + + // Restore inputted PIN code + switch (mDialogState) { + case ICC_NEW_MODE: + mOldPin = savedInstanceState.getString(OLD_PINCODE); + break; + + case ICC_REENTER_MODE: + mOldPin = savedInstanceState.getString(OLD_PINCODE); + mNewPin = savedInstanceState.getString(NEW_PINCODE); + break; + + case ICC_LOCK_MODE: + case ICC_OLD_MODE: + default: + break; + } } mPinDialog.setOnPinEnteredListener(this); @@ -170,6 +192,23 @@ public class IccLockSettings extends PreferenceActivity out.putString(DIALOG_PIN, mPinDialog.getEditText().getText().toString()); out.putString(DIALOG_ERROR, mError); out.putBoolean(ENABLE_TO_STATE, mToState); + + // Save inputted PIN code + switch (mDialogState) { + case ICC_NEW_MODE: + out.putString(OLD_PINCODE, mOldPin); + break; + + case ICC_REENTER_MODE: + out.putString(OLD_PINCODE, mOldPin); + out.putString(NEW_PINCODE, mNewPin); + break; + + case ICC_LOCK_MODE: + case ICC_OLD_MODE: + default: + break; + } } else { super.onSaveInstanceState(out); }