diff options
author | John Wang <johnwang@google.com> | 2011-06-16 11:22:53 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-06-16 11:22:53 -0700 |
commit | ff42c04d15e000f6295e796e154cc60c54aa078b (patch) | |
tree | ece817f613b87052d7d280c0820e0f559da62525 /policy | |
parent | 0887b8c2e583e682cd2c1bc909cb3fdbec704004 (diff) | |
parent | b0b24b3df50988d23f571b83d829fecc986ec497 (diff) | |
download | frameworks_base-ff42c04d15e000f6295e796e154cc60c54aa078b.zip frameworks_base-ff42c04d15e000f6295e796e154cc60c54aa078b.tar.gz frameworks_base-ff42c04d15e000f6295e796e154cc60c54aa078b.tar.bz2 |
Merge "Support SIM permanently disabled state." into honeycomb-LTE
Diffstat (limited to 'policy')
5 files changed, 46 insertions, 9 deletions
diff --git a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java index 72209f6..f385a23 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java @@ -114,7 +114,15 @@ public class KeyguardUpdateMonitor { } String stateExtra = intent.getStringExtra(IccCard.INTENT_KEY_ICC_STATE); if (IccCard.INTENT_VALUE_ICC_ABSENT.equals(stateExtra)) { - this.simState = IccCard.State.ABSENT; + final String absentReason = intent + .getStringExtra(IccCard.INTENT_KEY_LOCKED_REASON); + + if (IccCard.INTENT_VALUE_ABSENT_ON_PERM_DISABLED.equals( + absentReason)) { + this.simState = IccCard.State.PERM_DISABLED; + } else { + this.simState = IccCard.State.ABSENT; + } } else if (IccCard.INTENT_VALUE_ICC_READY.equals(stateExtra)) { this.simState = IccCard.State.READY; } else if (IccCard.INTENT_VALUE_ICC_LOCKED.equals(stateExtra)) { diff --git a/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java b/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java index e7a9eb1..cfd0d4f 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java @@ -581,7 +581,9 @@ public class KeyguardViewMediator implements KeyguardViewCallback, final boolean provisioned = mUpdateMonitor.isDeviceProvisioned(); final IccCard.State state = mUpdateMonitor.getSimState(); final boolean lockedOrMissing = state.isPinLocked() - || ((state == IccCard.State.ABSENT) && requireSim); + || ((state == IccCard.State.ABSENT + || state == IccCard.State.PERM_DISABLED) + && requireSim); if (!lockedOrMissing && !provisioned) { if (DEBUG) Log.d(TAG, "doKeyguard: not showing because device isn't provisioned" @@ -688,12 +690,15 @@ public class KeyguardViewMediator implements KeyguardViewCallback, switch (simState) { case ABSENT: + case PERM_DISABLED: // only force lock screen in case of missing sim if user hasn't // gone through setup wizard if (!mUpdateMonitor.isDeviceProvisioned()) { if (!isShowing()) { - if (DEBUG) Log.d(TAG, "INTENT_VALUE_ICC_ABSENT and keygaurd isn't showing, we need " - + "to show the keyguard since the device isn't provisioned yet."); + if (DEBUG) Log.d(TAG, "INTENT_VALUE_ICC_ABSENT " + + "or PERM_DISABLED and keygaurd isn't showing," + + " we need to show the keyguard since the " + + "device isn't provisioned yet."); doKeyguard(); } else { resetStateLocked(); diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java index 874acd0..eea3040 100644 --- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java +++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java @@ -181,7 +181,8 @@ public class LockPatternKeyguardView extends KeyguardViewBase { private boolean stuckOnLockScreenBecauseSimMissing() { return mRequiresSim && (!mUpdateMonitor.isDeviceProvisioned()) - && (mUpdateMonitor.getSimState() == IccCard.State.ABSENT); + && (mUpdateMonitor.getSimState() == IccCard.State.ABSENT || + mUpdateMonitor.getSimState() == IccCard.State.PERM_DISABLED); } /** diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java index ed5a058..19adb3e 100644 --- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java +++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java @@ -55,8 +55,10 @@ public class LockPatternKeyguardViewProperties implements KeyguardViewProperties private boolean isSimPinSecure() { final IccCard.State simState = mUpdateMonitor.getSimState(); - return (simState == IccCard.State.PIN_REQUIRED || simState == IccCard.State.PUK_REQUIRED - || simState == IccCard.State.ABSENT); + return (simState == IccCard.State.PIN_REQUIRED + || simState == IccCard.State.PUK_REQUIRED + || simState == IccCard.State.ABSENT + || simState == IccCard.State.PERM_DISABLED); } } diff --git a/policy/src/com/android/internal/policy/impl/LockScreen.java b/policy/src/com/android/internal/policy/impl/LockScreen.java index 88f4f23..0f187d4 100644 --- a/policy/src/com/android/internal/policy/impl/LockScreen.java +++ b/policy/src/com/android/internal/policy/impl/LockScreen.java @@ -126,7 +126,12 @@ class LockScreen extends LinearLayout implements KeyguardScreen, /** * The sim card is locked. */ - SimLocked(true); + SimLocked(true), + + /** + * The sim card is permanently disabled due to puk unlock failure + */ + SimPermDisabled(false); private final boolean mShowStatusLines; @@ -450,7 +455,9 @@ class LockScreen extends LinearLayout implements KeyguardScreen, */ private Status getCurrentStatus(IccCard.State simState) { boolean missingAndNotProvisioned = (!mUpdateMonitor.isDeviceProvisioned() - && simState == IccCard.State.ABSENT); + && (simState == IccCard.State.ABSENT + || simState == IccCard.State.PERM_DISABLED)); + if (missingAndNotProvisioned) { return Status.SimMissingLocked; } @@ -468,6 +475,8 @@ class LockScreen extends LinearLayout implements KeyguardScreen, return Status.SimPukLocked; case READY: return Status.Normal; + case PERM_DISABLED: + return Status.SimPermDisabled; case UNKNOWN: return Status.SimMissing; } @@ -542,6 +551,18 @@ class LockScreen extends LinearLayout implements KeyguardScreen, enableUnlock(); // do not need to show the e-call button; user may unlock break; + case SimPermDisabled: + // text + mStatusView.setCarrierText(R.string.lockscreen_missing_sim_message_short); + mScreenLocked.setText( + R.string.lockscreen_permanent_disabled_sim_instructions); + + // layout + mScreenLocked.setVisibility(View.VISIBLE); + mLockPatternUtils.updateEmergencyCallText(mEmergencyCallText); + enableUnlock(); // do not need to show the e-call button; user may unlock + break; + case SimMissingLocked: // text mStatusView.setCarrierText( |