diff options
| author | 2012-06-15 15:19:16 -0700 | |
|---|---|---|
| committer | 2012-06-15 15:19:16 -0700 | |
| commit | b06be57f0acf8bb7b8c1767604058c8f061a7b8b (patch) | |
| tree | d7d00b67831a325d7e47f041064885a54016e382 | |
| parent | 531d5866d8e2529e2ae1c6ef12202119753bec03 (diff) | |
| parent | 2de5ee84636739dc82a4c4dda76666bf38cf281c (diff) | |
Merge "Fix 6507787: fix MMI PUK unlock procedure" into jb-dev
| -rw-r--r-- | policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java | 7 | ||||
| -rw-r--r-- | policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java | 18 |
2 files changed, 24 insertions, 1 deletions
diff --git a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java index 87ec16b23419..dfe9134d28cb 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java @@ -105,6 +105,8 @@ public class KeyguardUpdateMonitor { protected static final int MSG_DPM_STATE_CHANGED = 309; protected static final int MSG_USER_CHANGED = 310; + protected static final boolean DEBUG_SIM_STATES = DEBUG || false; + /** * When we receive a * {@link com.android.internal.telephony.TelephonyIntents#ACTION_SIM_STATE_CHANGED} broadcast, @@ -292,6 +294,10 @@ public class KeyguardUpdateMonitor { MSG_BATTERY_UPDATE, new BatteryStatus(status, level, plugged, health)); mHandler.sendMessage(msg); } else if (TelephonyIntents.ACTION_SIM_STATE_CHANGED.equals(action)) { + if (DEBUG_SIM_STATES) { + Log.v(TAG, "action " + action + " state" + + intent.getStringExtra(IccCard.INTENT_KEY_ICC_STATE)); + } mHandler.sendMessage(mHandler.obtainMessage( MSG_SIM_STATE_CHANGE, SimArgs.fromIntent(intent))); } else if (AudioManager.RINGER_MODE_CHANGED_ACTION.equals(action)) { @@ -407,6 +413,7 @@ public class KeyguardUpdateMonitor { } if (state != IccCard.State.UNKNOWN && state != mSimState) { + if (DEBUG_SIM_STATES) Log.v(TAG, "dispatching state: " + state); mSimState = state; for (int i = 0; i < mSimStateCallbacks.size(); i++) { mSimStateCallbacks.get(i).onSimStateChanged(state); diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java index 518d8e973b26..35e782082eba 100644 --- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java +++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java @@ -202,8 +202,21 @@ public class LockPatternKeyguardView extends KeyguardViewBase { private Runnable mRecreateRunnable = new Runnable() { public void run() { - updateScreen(mMode, true); + Mode mode = mMode; + // If we were previously in a locked state but now it's Unknown, it means the phone + // was previously locked because of SIM state and has since been resolved. This + // bit of code checks this condition and dismisses keyguard. + boolean dismissAfterCreation = false; + if (mode == Mode.UnlockScreen && getUnlockMode() == UnlockMode.Unknown) { + if (DEBUG) Log.v(TAG, "Switch to Mode.LockScreen because SIM unlocked"); + mode = Mode.LockScreen; + dismissAfterCreation = true; + } + updateScreen(mode, true); restoreWidgetState(); + if (dismissAfterCreation) { + mKeyguardScreenCallback.keyguardDone(false); + } } }; @@ -307,6 +320,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase { } public void recreateMe(Configuration config) { + if (DEBUG) Log.v(TAG, "recreateMe()"); removeCallbacks(mRecreateRunnable); post(mRecreateRunnable); } @@ -524,6 +538,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase { public void reset() { mIsVerifyUnlockOnly = false; mForgotPattern = false; + if (DEBUG) Log.v(TAG, "reset()"); post(mRecreateRunnable); } @@ -673,6 +688,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase { if (DEBUG_CONFIGURATION) Log.v(TAG, "**** re-creating lock screen since config changed"); saveWidgetState(); removeCallbacks(mRecreateRunnable); + if (DEBUG) Log.v(TAG, "recreating lockscreen because config changed"); post(mRecreateRunnable); } |