diff options
author | xinhe <xinhe@google.com> | 2014-12-04 15:14:59 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-12-04 15:14:59 +0000 |
commit | 9a4472bf45044082f4fa6d906530f3640761676a (patch) | |
tree | 57e45450ab4236f6278a6b941fd8aaeb02db8fed | |
parent | 0304c529b6a166547aaf104a46bc876780ba7416 (diff) | |
parent | 8f61e7549ebb7ccb6bc2d41c30a9f2da2fb9bd7c (diff) | |
download | frameworks_base-9a4472bf45044082f4fa6d906530f3640761676a.zip frameworks_base-9a4472bf45044082f4fa6d906530f3640761676a.tar.gz frameworks_base-9a4472bf45044082f4fa6d906530f3640761676a.tar.bz2 |
am 8f61e754: Merge "Unable to unlock SIM with a PIN/PUK" into lmp-mr1-dev
* commit '8f61e7549ebb7ccb6bc2d41c30a9f2da2fb9bd7c':
Unable to unlock SIM with a PIN/PUK
-rw-r--r-- | packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java | 11 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/IccCardConstants.java | 20 |
2 files changed, 25 insertions, 6 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java index 7f1314d..ff07dd7 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -1303,16 +1303,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { // that don't return the complete set of values and have different types. In Keyguard we // need IccCardConstants, but TelephonyManager would only give us // TelephonyManager.SIM_STATE*, so we retrieve it manually. - final int phoneId = SubscriptionManager.getPhoneId(subId); - final String stateString = TelephonyManager.getTelephonyProperty(phoneId, - TelephonyProperties.PROPERTY_SIM_STATE, ""); + final TelephonyManager tele = TelephonyManager.from(mContext); + int simState = tele.getSimState(slotId); State state; try { - state = State.valueOf(stateString); + state = State.intToState(simState); } catch(IllegalArgumentException ex) { - Log.w(TAG, "Unknown sim state: " + stateString); + Log.w(TAG, "Unknown sim state: " + simState); state = State.UNKNOWN; - } + } mSimDatas.put(subId, new SimData(state, slotId, subId)); } diff --git a/telephony/java/com/android/internal/telephony/IccCardConstants.java b/telephony/java/com/android/internal/telephony/IccCardConstants.java index e7ca8d6..c1e2518 100644 --- a/telephony/java/com/android/internal/telephony/IccCardConstants.java +++ b/telephony/java/com/android/internal/telephony/IccCardConstants.java @@ -34,6 +34,10 @@ public class IccCardConstants { static public final String INTENT_VALUE_ICC_CARD_IO_ERROR = "CARD_IO_ERROR"; /* LOCKED means ICC is locked by pin or by network */ public static final String INTENT_VALUE_ICC_LOCKED = "LOCKED"; + //TODO: we can remove this state in the future if Bug 18489776 analysis + //#42's first race condition is resolved + /* INTERNAL LOCKED means ICC is locked by pin or by network */ + public static final String INTENT_VALUE_ICC_INTERNAL_LOCKED = "INTERNAL_LOCKED"; /* READY means ICC is ready to access */ public static final String INTENT_VALUE_ICC_READY = "READY"; /* IMSI means ICC IMSI is ready in property */ @@ -81,5 +85,21 @@ public class IccCardConstants { || (this == NETWORK_LOCKED) || (this == READY) || (this == PERM_DISABLED) || (this == CARD_IO_ERROR)); } + + public static State intToState(int state) throws IllegalArgumentException { + switch(state) { + case 0: return UNKNOWN; + case 1: return ABSENT; + case 2: return PIN_REQUIRED; + case 3: return PUK_REQUIRED; + case 4: return NETWORK_LOCKED; + case 5: return READY; + case 6: return NOT_READY; + case 7: return PERM_DISABLED; + case 8: return CARD_IO_ERROR; + default: + throw new IllegalArgumentException(); + } + } } } |