diff --git a/api/system-current.txt b/api/system-current.txt index 1dad47cb3d77b..17c7d37dc5ae8 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -1594,9 +1594,25 @@ package android.content { field public static final String EXTRA_REMOTE_CALLBACK = "android.intent.extra.REMOTE_CALLBACK"; field public static final String EXTRA_RESULT_NEEDED = "android.intent.extra.RESULT_NEEDED"; field public static final String EXTRA_ROLE_NAME = "android.intent.extra.ROLE_NAME"; + field @Deprecated public static final String EXTRA_SIM_LOCKED_REASON = "reason"; + field @Deprecated public static final String EXTRA_SIM_STATE = "ss"; field public static final String EXTRA_UNKNOWN_INSTANT_APP = "android.intent.extra.UNKNOWN_INSTANT_APP"; field public static final String EXTRA_VERIFICATION_BUNDLE = "android.intent.extra.VERIFICATION_BUNDLE"; field public static final String METADATA_SETUP_VERSION = "android.SETUP_VERSION"; + field @Deprecated public static final String SIM_ABSENT_ON_PERM_DISABLED = "PERM_DISABLED"; + field @Deprecated public static final String SIM_LOCKED_NETWORK = "NETWORK"; + field @Deprecated public static final String SIM_LOCKED_ON_PIN = "PIN"; + field @Deprecated public static final String SIM_LOCKED_ON_PUK = "PUK"; + field @Deprecated public static final String SIM_STATE_ABSENT = "ABSENT"; + field @Deprecated public static final String SIM_STATE_CARD_IO_ERROR = "CARD_IO_ERROR"; + field @Deprecated public static final String SIM_STATE_CARD_RESTRICTED = "CARD_RESTRICTED"; + field @Deprecated public static final String SIM_STATE_IMSI = "IMSI"; + field @Deprecated public static final String SIM_STATE_LOADED = "LOADED"; + field @Deprecated public static final String SIM_STATE_LOCKED = "LOCKED"; + field @Deprecated public static final String SIM_STATE_NOT_READY = "NOT_READY"; + field @Deprecated public static final String SIM_STATE_PRESENT = "PRESENT"; + field @Deprecated public static final String SIM_STATE_READY = "READY"; + field @Deprecated public static final String SIM_STATE_UNKNOWN = "UNKNOWN"; } public class IntentFilter implements android.os.Parcelable { diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 2a17800dd446c..e9a476211f1e6 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -3995,15 +3995,185 @@ public class Intent implements Parcelable, Cloneable { * Broadcast Action: The sim card state has changed. * For more details see TelephonyIntents.ACTION_SIM_STATE_CHANGED. This is here * because TelephonyIntents is an internal class. - * @hide + * The intent will have following extras.

+ *

+ * @see #EXTRA_SIM_STATE + * @see #EXTRA_SIM_LOCKED_REASON + * * @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} or * {@link #ACTION_SIM_APPLICATION_STATE_CHANGED} + * + * @hide */ @Deprecated @SystemApi @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED"; + /** + * The extra used with {@link #ACTION_SIM_STATE_CHANGED} for broadcasting SIM STATE. + * This will have one of the following intent values. + * @see #SIM_STATE_UNKNOWN + * @see #SIM_STATE_NOT_READY + * @see #SIM_STATE_ABSENT + * @see #SIM_STATE_PRESENT + * @see #SIM_STATE_CARD_IO_ERROR + * @see #SIM_STATE_CARD_RESTRICTED + * @see #SIM_STATE_LOCKED + * @see #SIM_STATE_READY + * @see #SIM_STATE_IMSI + * @see #SIM_STATE_LOADED + * @hide + * @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String EXTRA_SIM_STATE = "ss"; + + /** + * The intent value UNKNOWN represents the SIM state unknown + * @hide + * @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String SIM_STATE_UNKNOWN = "UNKNOWN"; + + /** + * The intent value NOT_READY means that the SIM is not ready eg. radio is off or powering on + * @hide + * @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String SIM_STATE_NOT_READY = "NOT_READY"; + + /** + * The intent value ABSENT means the SIM card is missing + * @hide + * @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String SIM_STATE_ABSENT = "ABSENT"; + + /** + * The intent value PRESENT means the device has a SIM card inserted + * @hide + * @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String SIM_STATE_PRESENT = "PRESENT"; + + /** + * The intent value CARD_IO_ERROR means for three consecutive times there was SIM IO error + * @hide + * @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} + */ + @Deprecated + @SystemApi + static public final String SIM_STATE_CARD_IO_ERROR = "CARD_IO_ERROR"; + + /** + * The intent value CARD_RESTRICTED means card is present but not usable due to carrier + * restrictions + * @hide + * @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} + */ + @Deprecated + @SystemApi + static public final String SIM_STATE_CARD_RESTRICTED = "CARD_RESTRICTED"; + + /** + * The intent value LOCKED means the SIM is locked by PIN or by network + * @hide + * @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String SIM_STATE_LOCKED = "LOCKED"; + + /** + * The intent value READY means the SIM is ready to be accessed + * @hide + * @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String SIM_STATE_READY = "READY"; + + /** + * The intent value IMSI means the SIM IMSI is ready in property + * @hide + * @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String SIM_STATE_IMSI = "IMSI"; + + /** + * The intent value LOADED means all SIM records, including IMSI, are loaded + * @hide + * @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String SIM_STATE_LOADED = "LOADED"; + + /** + * The extra used with {@link #ACTION_SIM_STATE_CHANGED} for broadcasting SIM STATE. + * This extra will have one of the following intent values. + *

+ * @see #SIM_LOCKED_ON_PIN + * @see #SIM_LOCKED_ON_PUK + * @see #SIM_LOCKED_NETWORK + * @see #SIM_ABSENT_ON_PERM_DISABLED + * + * @hide + * @deprecated Use {@link #ACTION_SIM_APPLICATION_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String EXTRA_SIM_LOCKED_REASON = "reason"; + + /** + * The intent value PIN means the SIM is locked on PIN1 + * @hide + * @deprecated Use {@link #ACTION_SIM_APPLICATION_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String SIM_LOCKED_ON_PIN = "PIN"; + + /** + * The intent value PUK means the SIM is locked on PUK1 + * @hide + * @deprecated Use {@link #ACTION_SIM_APPLICATION_STATE_CHANGED} + */ + /* PUK means ICC is locked on PUK1 */ + @Deprecated + @SystemApi + public static final String SIM_LOCKED_ON_PUK = "PUK"; + + /** + * The intent value NETWORK means the SIM is locked on NETWORK PERSONALIZATION + * @hide + * @deprecated Use {@link #ACTION_SIM_APPLICATION_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String SIM_LOCKED_NETWORK = "NETWORK"; + + /** + * The intent value PERM_DISABLED means SIM is permanently disabled due to puk fails + * @hide + * @deprecated Use {@link #ACTION_SIM_APPLICATION_STATE_CHANGED} + */ + @Deprecated + @SystemApi + public static final String SIM_ABSENT_ON_PERM_DISABLED = "PERM_DISABLED"; + /** * Broadcast Action: indicate that the phone service state has changed. * The intent will have the following extra values:

diff --git a/services/core/java/com/android/server/connectivity/DataConnectionStats.java b/services/core/java/com/android/server/connectivity/DataConnectionStats.java index 27f11ffa60cef..1b1c546822558 100644 --- a/services/core/java/com/android/server/connectivity/DataConnectionStats.java +++ b/services/core/java/com/android/server/connectivity/DataConnectionStats.java @@ -31,8 +31,6 @@ import android.telephony.TelephonyManager; import android.util.Log; import com.android.internal.app.IBatteryStats; -import com.android.internal.telephony.IccCardConstants; -import com.android.internal.telephony.TelephonyIntents; import com.android.server.am.BatteryStatsService; public class DataConnectionStats extends BroadcastReceiver { @@ -44,7 +42,7 @@ public class DataConnectionStats extends BroadcastReceiver { private final Handler mListenerHandler; private final PhoneStateListener mPhoneStateListener; - private IccCardConstants.State mSimState = IccCardConstants.State.READY; + private int mSimState = TelephonyManager.SIM_STATE_READY; private SignalStrength mSignalStrength; private ServiceState mServiceState; private int mDataState = TelephonyManager.DATA_DISCONNECTED; @@ -66,7 +64,7 @@ public class DataConnectionStats extends BroadcastReceiver { | PhoneStateListener.LISTEN_DATA_ACTIVITY); IntentFilter filter = new IntentFilter(); - filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); + filter.addAction(Intent.ACTION_SIM_STATE_CHANGED); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); filter.addAction(ConnectivityManager.INET_CONDITION_ACTION); mContext.registerReceiver(this, filter, null /* broadcastPermission */, mListenerHandler); @@ -75,7 +73,7 @@ public class DataConnectionStats extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); - if (action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) { + if (action.equals(Intent.ACTION_SIM_STATE_CHANGED)) { updateSimState(intent); notePhoneDataConnectionState(); } else if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION) || @@ -88,8 +86,8 @@ public class DataConnectionStats extends BroadcastReceiver { if (mServiceState == null) { return; } - boolean simReadyOrUnknown = mSimState == IccCardConstants.State.READY - || mSimState == IccCardConstants.State.UNKNOWN; + boolean simReadyOrUnknown = mSimState == TelephonyManager.SIM_STATE_READY + || mSimState == TelephonyManager.SIM_STATE_UNKNOWN; boolean visible = (simReadyOrUnknown || isCdma()) // we only check the sim state for GSM && hasService() && mDataState == TelephonyManager.DATA_CONNECTED; @@ -105,23 +103,23 @@ public class DataConnectionStats extends BroadcastReceiver { } private final void updateSimState(Intent intent) { - String stateExtra = intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE); - if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(stateExtra)) { - mSimState = IccCardConstants.State.ABSENT; - } else if (IccCardConstants.INTENT_VALUE_ICC_READY.equals(stateExtra)) { - mSimState = IccCardConstants.State.READY; - } else if (IccCardConstants.INTENT_VALUE_ICC_LOCKED.equals(stateExtra)) { + String stateExtra = intent.getStringExtra(Intent.EXTRA_SIM_STATE); + if (Intent.SIM_STATE_ABSENT.equals(stateExtra)) { + mSimState = TelephonyManager.SIM_STATE_ABSENT; + } else if (Intent.SIM_STATE_READY.equals(stateExtra)) { + mSimState = TelephonyManager.SIM_STATE_READY; + } else if (Intent.SIM_STATE_LOCKED.equals(stateExtra)) { final String lockedReason = - intent.getStringExtra(IccCardConstants.INTENT_KEY_LOCKED_REASON); - if (IccCardConstants.INTENT_VALUE_LOCKED_ON_PIN.equals(lockedReason)) { - mSimState = IccCardConstants.State.PIN_REQUIRED; - } else if (IccCardConstants.INTENT_VALUE_LOCKED_ON_PUK.equals(lockedReason)) { - mSimState = IccCardConstants.State.PUK_REQUIRED; + intent.getStringExtra(Intent.EXTRA_SIM_LOCKED_REASON); + if (Intent.SIM_LOCKED_ON_PIN.equals(lockedReason)) { + mSimState = TelephonyManager.SIM_STATE_PIN_REQUIRED; + } else if (Intent.SIM_LOCKED_ON_PUK.equals(lockedReason)) { + mSimState = TelephonyManager.SIM_STATE_PUK_REQUIRED; } else { - mSimState = IccCardConstants.State.NETWORK_LOCKED; + mSimState = TelephonyManager.SIM_STATE_NETWORK_LOCKED; } } else { - mSimState = IccCardConstants.State.UNKNOWN; + mSimState = TelephonyManager.SIM_STATE_UNKNOWN; } } diff --git a/telephony/java/com/android/internal/telephony/IccCardConstants.java b/telephony/java/com/android/internal/telephony/IccCardConstants.java index 6ff27b1152c82..25f03c200610e 100644 --- a/telephony/java/com/android/internal/telephony/IccCardConstants.java +++ b/telephony/java/com/android/internal/telephony/IccCardConstants.java @@ -15,6 +15,7 @@ */ package com.android.internal.telephony; +import android.content.Intent; import android.telephony.TelephonyManager; import dalvik.annotation.compat.UnsupportedAppUsage; @@ -25,37 +26,38 @@ import dalvik.annotation.compat.UnsupportedAppUsage; public class IccCardConstants { /* The extra data for broadcasting intent INTENT_ICC_STATE_CHANGE */ - public static final String INTENT_KEY_ICC_STATE = "ss"; + public static final String INTENT_KEY_ICC_STATE = Intent.EXTRA_SIM_STATE; /* UNKNOWN means the ICC state is unknown */ - public static final String INTENT_VALUE_ICC_UNKNOWN = "UNKNOWN"; + public static final String INTENT_VALUE_ICC_UNKNOWN = Intent.SIM_STATE_UNKNOWN; /* NOT_READY means the ICC interface is not ready (eg, radio is off or powering on) */ - public static final String INTENT_VALUE_ICC_NOT_READY = "NOT_READY"; + public static final String INTENT_VALUE_ICC_NOT_READY = Intent.SIM_STATE_NOT_READY; /* ABSENT means ICC is missing */ - public static final String INTENT_VALUE_ICC_ABSENT = "ABSENT"; + public static final String INTENT_VALUE_ICC_ABSENT = Intent.SIM_STATE_ABSENT; /* PRESENT means ICC is present */ - public static final String INTENT_VALUE_ICC_PRESENT = "PRESENT"; + public static final String INTENT_VALUE_ICC_PRESENT = Intent.SIM_STATE_PRESENT; /* CARD_IO_ERROR means for three consecutive times there was SIM IO error */ - static public final String INTENT_VALUE_ICC_CARD_IO_ERROR = "CARD_IO_ERROR"; + static public final String INTENT_VALUE_ICC_CARD_IO_ERROR = Intent.SIM_STATE_CARD_IO_ERROR; /* CARD_RESTRICTED means card is present but not usable due to carrier restrictions */ - static public final String INTENT_VALUE_ICC_CARD_RESTRICTED = "CARD_RESTRICTED"; + static public final String INTENT_VALUE_ICC_CARD_RESTRICTED = Intent.SIM_STATE_CARD_RESTRICTED; /* LOCKED means ICC is locked by pin or by network */ - public static final String INTENT_VALUE_ICC_LOCKED = "LOCKED"; + public static final String INTENT_VALUE_ICC_LOCKED = Intent.SIM_STATE_LOCKED; /* READY means ICC is ready to access */ - public static final String INTENT_VALUE_ICC_READY = "READY"; + public static final String INTENT_VALUE_ICC_READY = Intent.SIM_STATE_READY; /* IMSI means ICC IMSI is ready in property */ - public static final String INTENT_VALUE_ICC_IMSI = "IMSI"; + public static final String INTENT_VALUE_ICC_IMSI = Intent.SIM_STATE_IMSI; /* LOADED means all ICC records, including IMSI, are loaded */ - public static final String INTENT_VALUE_ICC_LOADED = "LOADED"; + public static final String INTENT_VALUE_ICC_LOADED = Intent.SIM_STATE_LOADED; /* The extra data for broadcasting intent INTENT_ICC_STATE_CHANGE */ - public static final String INTENT_KEY_LOCKED_REASON = "reason"; + public static final String INTENT_KEY_LOCKED_REASON = Intent.EXTRA_SIM_LOCKED_REASON; /* PIN means ICC is locked on PIN1 */ - public static final String INTENT_VALUE_LOCKED_ON_PIN = "PIN"; + public static final String INTENT_VALUE_LOCKED_ON_PIN = Intent.SIM_LOCKED_ON_PIN; /* PUK means ICC is locked on PUK1 */ - public static final String INTENT_VALUE_LOCKED_ON_PUK = "PUK"; + public static final String INTENT_VALUE_LOCKED_ON_PUK = Intent.SIM_LOCKED_ON_PUK; /* NETWORK means ICC is locked on NETWORK PERSONALIZATION */ - public static final String INTENT_VALUE_LOCKED_NETWORK = "NETWORK"; + public static final String INTENT_VALUE_LOCKED_NETWORK = Intent.SIM_LOCKED_NETWORK; /* PERM_DISABLED means ICC is permanently disabled due to puk fails */ - public static final String INTENT_VALUE_ABSENT_ON_PERM_DISABLED = "PERM_DISABLED"; + public static final String INTENT_VALUE_ABSENT_ON_PERM_DISABLED = + Intent.SIM_ABSENT_ON_PERM_DISABLED; /** * This is combination of IccCardStatus.CardState and IccCardApplicationStatus.AppState