Loading packages/SystemUI/res-keyguard/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,9 @@ to unlock the keyguard. Displayed in one line in a large font. --> <string name="keyguard_password_wrong_pin_code">Incorrect PIN code.</string> <!-- Shown in the lock screen when there is SIM card IO error. --> <string name="keyguard_sim_error_message_short">Invalid Card.</string> <!-- When the lock screen is showing, the phone is plugged in and the battery is fully charged, say that it is charged. --> <string name="keyguard_charged">Charged</string> Loading packages/SystemUI/src/com/android/keyguard/CarrierText.java +58 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.internal.telephony.IccCardConstants; import com.android.internal.telephony.IccCardConstants.State; import com.android.internal.telephony.TelephonyIntents; import com.android.settingslib.WirelessUtils; import android.telephony.TelephonyManager; public class CarrierText extends TextView { private static final boolean DEBUG = KeyguardConstants.DEBUG; Loading @@ -52,6 +53,8 @@ public class CarrierText extends TextView { private WifiManager mWifiManager; private boolean[] mSimErrorState = new boolean[TelephonyManager.getDefault().getPhoneCount()]; private KeyguardUpdateMonitorCallback mCallback = new KeyguardUpdateMonitorCallback() { @Override public void onRefreshCarrierInfo() { Loading @@ -65,6 +68,22 @@ public class CarrierText extends TextView { public void onStartedWakingUp() { setSelected(true); }; public void onSimStateChanged(int subId, int slotId, IccCardConstants.State simState) { if (slotId < 0) { Log.d(TAG, "onSimStateChanged() - slotId invalid: " + slotId); return; } if (DEBUG) Log.d(TAG,"onSimStateChanged: " + getStatusForIccState(simState)); if (getStatusForIccState(simState) == StatusMode.SimIoError) { mSimErrorState[slotId] = true; updateCarrierText(); } else if (mSimErrorState[slotId]) { mSimErrorState[slotId] = false; updateCarrierText(); } }; }; /** * The status of this lock screen. Primarily used for widgets on LockScreen. Loading @@ -77,7 +96,8 @@ public class CarrierText extends TextView { SimPukLocked, // SIM card is PUK locked because SIM entered wrong too many times SimLocked, // SIM card is currently locked SimPermDisabled, // SIM card is permanently disabled due to PUK unlock failure SimNotReady; // SIM is not ready yet. May never be on devices w/o a SIM. SimNotReady, // SIM is not ready yet. May never be on devices w/o a SIM. SimIoError; // SIM card is faulty } public CarrierText(Context context) { Loading @@ -101,6 +121,35 @@ public class CarrierText extends TextView { mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); } /** * Checks if there are faulty cards. Adds the text depending on the slot of the card * @param text: current carrier text based on the sim state * @param noSims: whether a valid sim card is inserted * @return text */ private CharSequence updateCarrierTextWithSimIoError(CharSequence text, boolean noSims) { final CharSequence carrier = ""; CharSequence carrierTextForSimIOError = getCarrierTextForSimState( IccCardConstants.State.CARD_IO_ERROR, carrier); for (int index = 0; index < mSimErrorState.length; index++) { if (mSimErrorState[index]) { // In the case when no sim cards are detected but a faulty card is inserted // overwrite the text and only show "Invalid card" if (noSims) { return concatenate(carrierTextForSimIOError, getContext().getText(com.android.internal.R.string.emergency_calls_only)); } else if (index == 0) { // prepend "Invalid card" when faulty card is inserted in slot 0 text = concatenate(carrierTextForSimIOError, text); } else { // concatenate "Invalid card" when faulty card is inserted in slot 1 text = concatenate(text, carrierTextForSimIOError); } } } return text; } protected void updateCarrierText() { boolean allSimsMissing = true; boolean anySimReadyAndInService = false; Loading Loading @@ -179,6 +228,7 @@ public class CarrierText extends TextView { } } displayText = updateCarrierTextWithSimIoError(displayText, allSimsMissing); // APM (airplane mode) != no carrier state. There are carrier services // (e.g. WFC = Wi-Fi calling) which may operate in APM. if (!anySimReadyAndInService && WirelessUtils.isAirplaneModeOn(mContext)) { Loading Loading @@ -270,6 +320,11 @@ public class CarrierText extends TextView { getContext().getText(R.string.keyguard_sim_puk_locked_message), text); break; case SimIoError: carrierText = makeCarrierStringOnEmergencyCapable( getContext().getText(R.string.keyguard_sim_error_message_short), text); break; } return carrierText; Loading Loading @@ -319,6 +374,8 @@ public class CarrierText extends TextView { return StatusMode.SimPermDisabled; case UNKNOWN: return StatusMode.SimMissing; case CARD_IO_ERROR: return StatusMode.SimIoError; } return StatusMode.SimMissing; } Loading packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +2 −0 Original line number Diff line number Diff line Loading @@ -826,6 +826,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } else if (IccCardConstants.INTENT_VALUE_LOCKED_NETWORK.equals(stateExtra)) { state = IccCardConstants.State.NETWORK_LOCKED; } else if (IccCardConstants.INTENT_VALUE_ICC_CARD_IO_ERROR.equals(stateExtra)) { state = IccCardConstants.State.CARD_IO_ERROR; } else if (IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(stateExtra) || IccCardConstants.INTENT_VALUE_ICC_IMSI.equals(stateExtra)) { // This is required because telephony doesn't return to "READY" after Loading Loading
packages/SystemUI/res-keyguard/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,9 @@ to unlock the keyguard. Displayed in one line in a large font. --> <string name="keyguard_password_wrong_pin_code">Incorrect PIN code.</string> <!-- Shown in the lock screen when there is SIM card IO error. --> <string name="keyguard_sim_error_message_short">Invalid Card.</string> <!-- When the lock screen is showing, the phone is plugged in and the battery is fully charged, say that it is charged. --> <string name="keyguard_charged">Charged</string> Loading
packages/SystemUI/src/com/android/keyguard/CarrierText.java +58 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.internal.telephony.IccCardConstants; import com.android.internal.telephony.IccCardConstants.State; import com.android.internal.telephony.TelephonyIntents; import com.android.settingslib.WirelessUtils; import android.telephony.TelephonyManager; public class CarrierText extends TextView { private static final boolean DEBUG = KeyguardConstants.DEBUG; Loading @@ -52,6 +53,8 @@ public class CarrierText extends TextView { private WifiManager mWifiManager; private boolean[] mSimErrorState = new boolean[TelephonyManager.getDefault().getPhoneCount()]; private KeyguardUpdateMonitorCallback mCallback = new KeyguardUpdateMonitorCallback() { @Override public void onRefreshCarrierInfo() { Loading @@ -65,6 +68,22 @@ public class CarrierText extends TextView { public void onStartedWakingUp() { setSelected(true); }; public void onSimStateChanged(int subId, int slotId, IccCardConstants.State simState) { if (slotId < 0) { Log.d(TAG, "onSimStateChanged() - slotId invalid: " + slotId); return; } if (DEBUG) Log.d(TAG,"onSimStateChanged: " + getStatusForIccState(simState)); if (getStatusForIccState(simState) == StatusMode.SimIoError) { mSimErrorState[slotId] = true; updateCarrierText(); } else if (mSimErrorState[slotId]) { mSimErrorState[slotId] = false; updateCarrierText(); } }; }; /** * The status of this lock screen. Primarily used for widgets on LockScreen. Loading @@ -77,7 +96,8 @@ public class CarrierText extends TextView { SimPukLocked, // SIM card is PUK locked because SIM entered wrong too many times SimLocked, // SIM card is currently locked SimPermDisabled, // SIM card is permanently disabled due to PUK unlock failure SimNotReady; // SIM is not ready yet. May never be on devices w/o a SIM. SimNotReady, // SIM is not ready yet. May never be on devices w/o a SIM. SimIoError; // SIM card is faulty } public CarrierText(Context context) { Loading @@ -101,6 +121,35 @@ public class CarrierText extends TextView { mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); } /** * Checks if there are faulty cards. Adds the text depending on the slot of the card * @param text: current carrier text based on the sim state * @param noSims: whether a valid sim card is inserted * @return text */ private CharSequence updateCarrierTextWithSimIoError(CharSequence text, boolean noSims) { final CharSequence carrier = ""; CharSequence carrierTextForSimIOError = getCarrierTextForSimState( IccCardConstants.State.CARD_IO_ERROR, carrier); for (int index = 0; index < mSimErrorState.length; index++) { if (mSimErrorState[index]) { // In the case when no sim cards are detected but a faulty card is inserted // overwrite the text and only show "Invalid card" if (noSims) { return concatenate(carrierTextForSimIOError, getContext().getText(com.android.internal.R.string.emergency_calls_only)); } else if (index == 0) { // prepend "Invalid card" when faulty card is inserted in slot 0 text = concatenate(carrierTextForSimIOError, text); } else { // concatenate "Invalid card" when faulty card is inserted in slot 1 text = concatenate(text, carrierTextForSimIOError); } } } return text; } protected void updateCarrierText() { boolean allSimsMissing = true; boolean anySimReadyAndInService = false; Loading Loading @@ -179,6 +228,7 @@ public class CarrierText extends TextView { } } displayText = updateCarrierTextWithSimIoError(displayText, allSimsMissing); // APM (airplane mode) != no carrier state. There are carrier services // (e.g. WFC = Wi-Fi calling) which may operate in APM. if (!anySimReadyAndInService && WirelessUtils.isAirplaneModeOn(mContext)) { Loading Loading @@ -270,6 +320,11 @@ public class CarrierText extends TextView { getContext().getText(R.string.keyguard_sim_puk_locked_message), text); break; case SimIoError: carrierText = makeCarrierStringOnEmergencyCapable( getContext().getText(R.string.keyguard_sim_error_message_short), text); break; } return carrierText; Loading Loading @@ -319,6 +374,8 @@ public class CarrierText extends TextView { return StatusMode.SimPermDisabled; case UNKNOWN: return StatusMode.SimMissing; case CARD_IO_ERROR: return StatusMode.SimIoError; } return StatusMode.SimMissing; } Loading
packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +2 −0 Original line number Diff line number Diff line Loading @@ -826,6 +826,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } else if (IccCardConstants.INTENT_VALUE_LOCKED_NETWORK.equals(stateExtra)) { state = IccCardConstants.State.NETWORK_LOCKED; } else if (IccCardConstants.INTENT_VALUE_ICC_CARD_IO_ERROR.equals(stateExtra)) { state = IccCardConstants.State.CARD_IO_ERROR; } else if (IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(stateExtra) || IccCardConstants.INTENT_VALUE_ICC_IMSI.equals(stateExtra)) { // This is required because telephony doesn't return to "READY" after Loading