Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +16 −5 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import android.telephony.TelephonyManager; import android.util.EventLog; import android.util.Log; import android.util.Slog; import android.util.SparseBooleanArray; import android.util.SparseIntArray; import android.view.View; import android.view.ViewGroup; Loading Loading @@ -294,6 +295,13 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable { */ private final SparseIntArray mLastSimStates = new SparseIntArray(); /** * Indicates if a SIM card had the SIM PIN enabled during the initialization, before * reaching the SIM_STATE_READY state. The flag is reset to false at SIM_STATE_READY. * Index is the slotId - in case of multiple SIM cards. */ private final SparseBooleanArray mSimWasLocked = new SparseBooleanArray(); private boolean mDeviceInteractive; private boolean mGoingToSleep; Loading Loading @@ -465,10 +473,10 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable { } } boolean simWasLocked; boolean lastSimStateWasLocked; synchronized (KeyguardViewMediator.this) { int lastState = mLastSimStates.get(slotId); simWasLocked = (lastState == TelephonyManager.SIM_STATE_PIN_REQUIRED lastSimStateWasLocked = (lastState == TelephonyManager.SIM_STATE_PIN_REQUIRED || lastState == TelephonyManager.SIM_STATE_PUK_REQUIRED); mLastSimStates.append(slotId, simState); } Loading @@ -492,17 +500,19 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable { if (simState == TelephonyManager.SIM_STATE_ABSENT) { // MVNO SIMs can become transiently NOT_READY when switching networks, // so we should only lock when they are ABSENT. if (simWasLocked) { if (lastSimStateWasLocked) { if (DEBUG_SIM_STATES) Log.d(TAG, "SIM moved to ABSENT when the " + "previous state was locked. Reset the state."); resetStateLocked(); } mSimWasLocked.append(slotId, false); } } break; case TelephonyManager.SIM_STATE_PIN_REQUIRED: case TelephonyManager.SIM_STATE_PUK_REQUIRED: synchronized (KeyguardViewMediator.this) { mSimWasLocked.append(slotId, true); if (!mShowing) { if (DEBUG_SIM_STATES) Log.d(TAG, "INTENT_VALUE_ICC_LOCKED and keygaurd isn't " Loading @@ -529,9 +539,10 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable { case TelephonyManager.SIM_STATE_READY: synchronized (KeyguardViewMediator.this) { if (DEBUG_SIM_STATES) Log.d(TAG, "READY, reset state? " + mShowing); if (mShowing && simWasLocked) { if (mShowing && mSimWasLocked.get(slotId, false)) { if (DEBUG_SIM_STATES) Log.d(TAG, "SIM moved to READY when the " + "previous state was locked. Reset the state."); + "previously was locked. Reset the state."); mSimWasLocked.append(slotId, false); resetStateLocked(); } } Loading Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +16 −5 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import android.telephony.TelephonyManager; import android.util.EventLog; import android.util.Log; import android.util.Slog; import android.util.SparseBooleanArray; import android.util.SparseIntArray; import android.view.View; import android.view.ViewGroup; Loading Loading @@ -294,6 +295,13 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable { */ private final SparseIntArray mLastSimStates = new SparseIntArray(); /** * Indicates if a SIM card had the SIM PIN enabled during the initialization, before * reaching the SIM_STATE_READY state. The flag is reset to false at SIM_STATE_READY. * Index is the slotId - in case of multiple SIM cards. */ private final SparseBooleanArray mSimWasLocked = new SparseBooleanArray(); private boolean mDeviceInteractive; private boolean mGoingToSleep; Loading Loading @@ -465,10 +473,10 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable { } } boolean simWasLocked; boolean lastSimStateWasLocked; synchronized (KeyguardViewMediator.this) { int lastState = mLastSimStates.get(slotId); simWasLocked = (lastState == TelephonyManager.SIM_STATE_PIN_REQUIRED lastSimStateWasLocked = (lastState == TelephonyManager.SIM_STATE_PIN_REQUIRED || lastState == TelephonyManager.SIM_STATE_PUK_REQUIRED); mLastSimStates.append(slotId, simState); } Loading @@ -492,17 +500,19 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable { if (simState == TelephonyManager.SIM_STATE_ABSENT) { // MVNO SIMs can become transiently NOT_READY when switching networks, // so we should only lock when they are ABSENT. if (simWasLocked) { if (lastSimStateWasLocked) { if (DEBUG_SIM_STATES) Log.d(TAG, "SIM moved to ABSENT when the " + "previous state was locked. Reset the state."); resetStateLocked(); } mSimWasLocked.append(slotId, false); } } break; case TelephonyManager.SIM_STATE_PIN_REQUIRED: case TelephonyManager.SIM_STATE_PUK_REQUIRED: synchronized (KeyguardViewMediator.this) { mSimWasLocked.append(slotId, true); if (!mShowing) { if (DEBUG_SIM_STATES) Log.d(TAG, "INTENT_VALUE_ICC_LOCKED and keygaurd isn't " Loading @@ -529,9 +539,10 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable { case TelephonyManager.SIM_STATE_READY: synchronized (KeyguardViewMediator.this) { if (DEBUG_SIM_STATES) Log.d(TAG, "READY, reset state? " + mShowing); if (mShowing && simWasLocked) { if (mShowing && mSimWasLocked.get(slotId, false)) { if (DEBUG_SIM_STATES) Log.d(TAG, "SIM moved to READY when the " + "previous state was locked. Reset the state."); + "previously was locked. Reset the state."); mSimWasLocked.append(slotId, false); resetStateLocked(); } } Loading