diff options
4 files changed, 14 insertions, 18 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java index 6528d8c07a6c..c0ec405e7dc1 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java @@ -66,17 +66,6 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView { public void onSimStateChanged(int subId, int slotId, State simState) { if (DEBUG) Log.v(TAG, "onSimStateChanged(subId=" + subId + ",state=" + simState + ")"); switch(simState) { - // If the SIM is removed, then we must remove the keyguard. It will be put up - // again when the PUK locked SIM is re-entered. - case ABSENT: { - KeyguardUpdateMonitor.getInstance(getContext()).reportSimUnlocked(mSubId); - // onSimStateChanged callback can fire when the SIM PIN lock is not currently - // active and mCallback is null. - if (mCallback != null) { - mCallback.dismiss(true, KeyguardUpdateMonitor.getCurrentUser()); - } - break; - } case READY: { mRemainingAttempts = -1; resetState(); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukView.java index 1157f86872ec..b17d117b68e3 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukView.java @@ -69,14 +69,11 @@ public class KeyguardSimPukView extends KeyguardPinBasedInputView { public void onSimStateChanged(int subId, int slotId, State simState) { if (DEBUG) Log.v(TAG, "onSimStateChanged(subId=" + subId + ",state=" + simState + ")"); switch(simState) { - // If the SIM is removed, then we must remove the keyguard. It will be put up - // again when the PUK locked SIM is re-entered. - case ABSENT: - // intentional fall-through // If the SIM is unlocked via a key sequence through the emergency dialer, it will // move into the READY state and the PUK lock keyguard should be removed. case READY: { - KeyguardUpdateMonitor.getInstance(getContext()).reportSimUnlocked(mSubId); + mRemainingAttempts = -1; + mShowDefaultMessage = true; // mCallback can be null if onSimStateChanged callback is called when keyguard // isn't active. if (mCallback != null) { diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 416441e33a05..bcd41a076eee 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -1936,6 +1936,13 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { // Even though the subscription is not valid anymore, we need to notify that the // SIM card was removed so we can update the UI. becameAbsent = true; + for (SimData data : mSimDatas.values()) { + // Set the SIM state of all SimData associated with that slot to ABSENT se we + // do not move back into PIN/PUK locked and not detect the change below. + if (data.slotId == slotId) { + data.simState = State.ABSENT; + } + } } else { return; } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index b133346bcf8f..323cf1fe7022 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -445,8 +445,7 @@ public class KeyguardViewMediator extends SystemUI { boolean simWasLocked; synchronized (KeyguardViewMediator.this) { IccCardConstants.State lastState = mLastSimStates.get(slotId); - simWasLocked = (lastState == PIN_REQUIRED || lastState == PUK_REQUIRED) - && simState == READY; + simWasLocked = (lastState == PIN_REQUIRED || lastState == PUK_REQUIRED); mLastSimStates.append(slotId, simState); } @@ -471,6 +470,8 @@ public class KeyguardViewMediator extends SystemUI { // so we should only lock when they are ABSENT. onSimAbsentLocked(); if (simWasLocked) { + if (DEBUG_SIM_STATES) Log.d(TAG, "SIM moved to ABSENT when the " + + "previous state was locked. Reset the state."); resetStateLocked(); } } @@ -507,6 +508,8 @@ public class KeyguardViewMediator extends SystemUI { synchronized (KeyguardViewMediator.this) { if (DEBUG_SIM_STATES) Log.d(TAG, "READY, reset state? " + mShowing); if (mShowing && simWasLocked) { + if (DEBUG_SIM_STATES) Log.d(TAG, "SIM moved to READY when the " + + "previous state was locked. Reset the state."); resetStateLocked(); } mLockWhenSimRemoved = true; |