Merge "Added new SIM state related broadcasts."
This commit is contained in:
@@ -727,7 +727,9 @@ package android.content {
|
|||||||
field public static final java.lang.String ACTION_QUERY_PACKAGE_RESTART = "android.intent.action.QUERY_PACKAGE_RESTART";
|
field public static final java.lang.String ACTION_QUERY_PACKAGE_RESTART = "android.intent.action.QUERY_PACKAGE_RESTART";
|
||||||
field public static final java.lang.String ACTION_RESOLVE_INSTANT_APP_PACKAGE = "android.intent.action.RESOLVE_INSTANT_APP_PACKAGE";
|
field public static final java.lang.String ACTION_RESOLVE_INSTANT_APP_PACKAGE = "android.intent.action.RESOLVE_INSTANT_APP_PACKAGE";
|
||||||
field public static final java.lang.String ACTION_REVIEW_PERMISSIONS = "android.intent.action.REVIEW_PERMISSIONS";
|
field public static final java.lang.String ACTION_REVIEW_PERMISSIONS = "android.intent.action.REVIEW_PERMISSIONS";
|
||||||
field public static final java.lang.String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
|
field public static final java.lang.String ACTION_SIM_APPLICATION_STATE_CHANGED = "android.intent.action.SIM_APPLICATION_STATE_CHANGED";
|
||||||
|
field public static final java.lang.String ACTION_SIM_CARD_STATE_CHANGED = "android.intent.action.SIM_CARD_STATE_CHANGED";
|
||||||
|
field public static final deprecated java.lang.String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
|
||||||
field public static final java.lang.String ACTION_UPGRADE_SETUP = "android.intent.action.UPGRADE_SETUP";
|
field public static final java.lang.String ACTION_UPGRADE_SETUP = "android.intent.action.UPGRADE_SETUP";
|
||||||
field public static final java.lang.String ACTION_USER_REMOVED = "android.intent.action.USER_REMOVED";
|
field public static final java.lang.String ACTION_USER_REMOVED = "android.intent.action.USER_REMOVED";
|
||||||
field public static final java.lang.String ACTION_VOICE_ASSIST = "android.intent.action.VOICE_ASSIST";
|
field public static final java.lang.String ACTION_VOICE_ASSIST = "android.intent.action.VOICE_ASSIST";
|
||||||
@@ -4034,6 +4036,8 @@ package android.telephony {
|
|||||||
method public int getCurrentPhoneType(int);
|
method public int getCurrentPhoneType(int);
|
||||||
method public deprecated boolean getDataEnabled();
|
method public deprecated boolean getDataEnabled();
|
||||||
method public deprecated boolean getDataEnabled(int);
|
method public deprecated boolean getDataEnabled(int);
|
||||||
|
method public int getSimApplicationState();
|
||||||
|
method public int getSimCardState();
|
||||||
method public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms();
|
method public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms();
|
||||||
method public android.os.Bundle getVisualVoicemailSettings();
|
method public android.os.Bundle getVisualVoicemailSettings();
|
||||||
method public boolean handlePinMmi(java.lang.String);
|
method public boolean handlePinMmi(java.lang.String);
|
||||||
@@ -4062,8 +4066,11 @@ package android.telephony {
|
|||||||
field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
|
field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1
|
||||||
field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0
|
field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0
|
||||||
field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff
|
field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff
|
||||||
|
field public static final java.lang.String EXTRA_SIM_STATE = "android.telephony.extra.SIM_STATE";
|
||||||
field public static final java.lang.String EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL = "android.telephony.extra.VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL";
|
field public static final java.lang.String EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL = "android.telephony.extra.VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL";
|
||||||
field public static final java.lang.String EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING = "android.telephony.extra.VOICEMAIL_SCRAMBLED_PIN_STRING";
|
field public static final java.lang.String EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING = "android.telephony.extra.VOICEMAIL_SCRAMBLED_PIN_STRING";
|
||||||
|
field public static final int SIM_STATE_LOADED = 10; // 0xa
|
||||||
|
field public static final int SIM_STATE_PRESENT = 11; // 0xb
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract class VisualVoicemailService extends android.app.Service {
|
public abstract class VisualVoicemailService extends android.app.Service {
|
||||||
|
|||||||
@@ -3511,11 +3511,82 @@ public class Intent implements Parcelable, Cloneable {
|
|||||||
* For more details see TelephonyIntents.ACTION_SIM_STATE_CHANGED. This is here
|
* For more details see TelephonyIntents.ACTION_SIM_STATE_CHANGED. This is here
|
||||||
* because TelephonyIntents is an internal class.
|
* because TelephonyIntents is an internal class.
|
||||||
* @hide
|
* @hide
|
||||||
|
* @deprecated Use {@link #ACTION_SIM_CARD_STATE_CHANGED} or
|
||||||
|
* {@link #ACTION_SIM_APPLICATION_STATE_CHANGED}
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
@SystemApi
|
@SystemApi
|
||||||
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
|
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
|
||||||
public static final String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
|
public static final String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Broadcast Action: The sim card state has changed.
|
||||||
|
* The intent will have the following extra values:</p>
|
||||||
|
* <dl>
|
||||||
|
* <dt>{@link android.telephony.TelephonyManager.EXTRA_SIM_STATE}</dt>
|
||||||
|
* <dd>The sim card state. One of:
|
||||||
|
* <dl>
|
||||||
|
* <dt>{@link android.telephony.TelephonyManager.SIM_STATE_ABSENT}</dt>
|
||||||
|
* <dd>SIM card not found</dd>
|
||||||
|
* <dt>{@link android.telephony.TelephonyManager.SIM_STATE_CARD_IO_ERROR}</dt>
|
||||||
|
* <dd>SIM card IO error</dd>
|
||||||
|
* <dt>{@link android.telephony.TelephonyManager.SIM_STATE_CARD_RESTRICTED}</dt>
|
||||||
|
* <dd>SIM card is restricted</dd>
|
||||||
|
* <dt>{@link android.telephony.TelephonyManager.SIM_STATE_PRESENT}</dt>
|
||||||
|
* <dd>SIM card is present</dd>
|
||||||
|
* </dl>
|
||||||
|
* </dd>
|
||||||
|
* </dl>
|
||||||
|
*
|
||||||
|
* <p class="note">Requires the READ_PRIVILEGED_PHONE_STATE permission.
|
||||||
|
*
|
||||||
|
* <p class="note">The current state can also be queried using
|
||||||
|
* {@link android.telephony.TelephonyManager.getSimCardState()}
|
||||||
|
*
|
||||||
|
* <p class="note">This is a protected intent that can only be sent by the system.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi
|
||||||
|
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
|
||||||
|
public static final String ACTION_SIM_CARD_STATE_CHANGED =
|
||||||
|
"android.intent.action.SIM_CARD_STATE_CHANGED";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Broadcast Action: The sim application state has changed.
|
||||||
|
* The intent will have the following extra values:</p>
|
||||||
|
* <dl>
|
||||||
|
* <dt>{@link android.telephony.TelephonyManager.EXTRA_SIM_STATE}</dt>
|
||||||
|
* <dd>The sim application state. One of:
|
||||||
|
* <dl>
|
||||||
|
* <dt>{@link android.telephony.TelephonyManager.SIM_STATE_NOT_READY}</dt>
|
||||||
|
* <dd>SIM card applications not ready</dd>
|
||||||
|
* <dt>{@link android.telephony.TelephonyManager.SIM_STATE_PIN_REQUIRED}</dt>
|
||||||
|
* <dd>SIM card PIN locked</dd>
|
||||||
|
* <dt>{@link android.telephony.TelephonyManager.SIM_STATE_PUK_REQUIRED}</dt>
|
||||||
|
* <dd>SIM card PUK locked</dd>
|
||||||
|
* <dt>{@link android.telephony.TelephonyManager.SIM_STATE_NETWORK_LOCKED}</dt>
|
||||||
|
* <dd>SIM card network locked</dd>
|
||||||
|
* <dt>{@link android.telephony.TelephonyManager.SIM_STATE_PERM_DISABLED}</dt>
|
||||||
|
* <dd>SIM card permanently disabled due to PUK failures</dd>
|
||||||
|
* <dt>{@link android.telephony.TelephonyManager.SIM_STATE_LOADED}</dt>
|
||||||
|
* <dd>SIM card data loaded</dd>
|
||||||
|
* </dl>
|
||||||
|
* </dd>
|
||||||
|
* </dl>
|
||||||
|
*
|
||||||
|
* <p class="note">Requires the READ_PRIVILEGED_PHONE_STATE permission.
|
||||||
|
*
|
||||||
|
* <p class="note">The current state can also be queried using
|
||||||
|
* {@link android.telephony.TelephonyManager.getSimApplicationState()}
|
||||||
|
*
|
||||||
|
* <p class="note">This is a protected intent that can only be sent by the system.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi
|
||||||
|
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
|
||||||
|
public static final String ACTION_SIM_APPLICATION_STATE_CHANGED =
|
||||||
|
"android.intent.action.SIM_APPLICATION_STATE_CHANGED";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Broadcast Action: indicate that the phone service state has changed.
|
* Broadcast Action: indicate that the phone service state has changed.
|
||||||
* The intent will have the following extra values:</p>
|
* The intent will have the following extra values:</p>
|
||||||
|
|||||||
@@ -2084,6 +2084,27 @@ public class TelephonyManager {
|
|||||||
* carrier restrictions.
|
* carrier restrictions.
|
||||||
*/
|
*/
|
||||||
public static final int SIM_STATE_CARD_RESTRICTED = 9;
|
public static final int SIM_STATE_CARD_RESTRICTED = 9;
|
||||||
|
/**
|
||||||
|
* SIM card state: Loaded: SIM card applications have been loaded
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi
|
||||||
|
public static final int SIM_STATE_LOADED = 10;
|
||||||
|
/**
|
||||||
|
* SIM card state: SIM Card is present
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi
|
||||||
|
public static final int SIM_STATE_PRESENT = 11;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extra included in {@link Intent.ACTION_SIM_CARD_STATE_CHANGED} and
|
||||||
|
* {@link Intent.ACTION_SIM_APPLICATION_STATE_CHANGED} to indicate the card/application state.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi
|
||||||
|
public static final String EXTRA_SIM_STATE = "android.telephony.extra.SIM_STATE";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if a ICC card is present
|
* @return true if a ICC card is present
|
||||||
@@ -2130,6 +2151,14 @@ public class TelephonyManager {
|
|||||||
* @see #SIM_STATE_CARD_RESTRICTED
|
* @see #SIM_STATE_CARD_RESTRICTED
|
||||||
*/
|
*/
|
||||||
public int getSimState() {
|
public int getSimState() {
|
||||||
|
int simState = getSimStateIncludingLoaded();
|
||||||
|
if (simState == SIM_STATE_LOADED) {
|
||||||
|
simState = SIM_STATE_READY;
|
||||||
|
}
|
||||||
|
return simState;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getSimStateIncludingLoaded() {
|
||||||
int slotIndex = getSlotIndex();
|
int slotIndex = getSlotIndex();
|
||||||
// slotIndex may be invalid due to sim being absent. In that case query all slots to get
|
// slotIndex may be invalid due to sim being absent. In that case query all slots to get
|
||||||
// sim state
|
// sim state
|
||||||
@@ -2148,7 +2177,63 @@ public class TelephonyManager {
|
|||||||
"state as absent");
|
"state as absent");
|
||||||
return SIM_STATE_ABSENT;
|
return SIM_STATE_ABSENT;
|
||||||
}
|
}
|
||||||
return getSimState(slotIndex);
|
return SubscriptionManager.getSimStateForSlotIndex(slotIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a constant indicating the state of the default SIM card.
|
||||||
|
*
|
||||||
|
* @see #SIM_STATE_UNKNOWN
|
||||||
|
* @see #SIM_STATE_ABSENT
|
||||||
|
* @see #SIM_STATE_CARD_IO_ERROR
|
||||||
|
* @see #SIM_STATE_CARD_RESTRICTED
|
||||||
|
* @see #SIM_STATE_PRESENT
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi
|
||||||
|
public int getSimCardState() {
|
||||||
|
int simCardState = getSimState();
|
||||||
|
switch (simCardState) {
|
||||||
|
case SIM_STATE_UNKNOWN:
|
||||||
|
case SIM_STATE_ABSENT:
|
||||||
|
case SIM_STATE_CARD_IO_ERROR:
|
||||||
|
case SIM_STATE_CARD_RESTRICTED:
|
||||||
|
return simCardState;
|
||||||
|
default:
|
||||||
|
return SIM_STATE_PRESENT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a constant indicating the state of the card applications on the default SIM card.
|
||||||
|
*
|
||||||
|
* @see #SIM_STATE_UNKNOWN
|
||||||
|
* @see #SIM_STATE_PIN_REQUIRED
|
||||||
|
* @see #SIM_STATE_PUK_REQUIRED
|
||||||
|
* @see #SIM_STATE_NETWORK_LOCKED
|
||||||
|
* @see #SIM_STATE_NOT_READY
|
||||||
|
* @see #SIM_STATE_PERM_DISABLED
|
||||||
|
* @see #SIM_STATE_LOADED
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi
|
||||||
|
public int getSimApplicationState() {
|
||||||
|
int simApplicationState = getSimStateIncludingLoaded();
|
||||||
|
switch (simApplicationState) {
|
||||||
|
case SIM_STATE_UNKNOWN:
|
||||||
|
case SIM_STATE_ABSENT:
|
||||||
|
case SIM_STATE_CARD_IO_ERROR:
|
||||||
|
case SIM_STATE_CARD_RESTRICTED:
|
||||||
|
return SIM_STATE_UNKNOWN;
|
||||||
|
case SIM_STATE_READY:
|
||||||
|
// Ready is not a valid state anymore. The state that is broadcast goes from
|
||||||
|
// NOT_READY to either LOCKED or LOADED.
|
||||||
|
return SIM_STATE_NOT_READY;
|
||||||
|
default:
|
||||||
|
return simApplicationState;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2169,6 +2254,9 @@ public class TelephonyManager {
|
|||||||
*/
|
*/
|
||||||
public int getSimState(int slotIndex) {
|
public int getSimState(int slotIndex) {
|
||||||
int simState = SubscriptionManager.getSimStateForSlotIndex(slotIndex);
|
int simState = SubscriptionManager.getSimStateForSlotIndex(slotIndex);
|
||||||
|
if (simState == SIM_STATE_LOADED) {
|
||||||
|
simState = SIM_STATE_READY;
|
||||||
|
}
|
||||||
return simState;
|
return simState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,16 +30,14 @@ public class IccCardConstants {
|
|||||||
public static final String INTENT_VALUE_ICC_NOT_READY = "NOT_READY";
|
public static final String INTENT_VALUE_ICC_NOT_READY = "NOT_READY";
|
||||||
/* ABSENT means ICC is missing */
|
/* ABSENT means ICC is missing */
|
||||||
public static final String INTENT_VALUE_ICC_ABSENT = "ABSENT";
|
public static final String INTENT_VALUE_ICC_ABSENT = "ABSENT";
|
||||||
|
/* PRESENT means ICC is present */
|
||||||
|
public static final String INTENT_VALUE_ICC_PRESENT = "PRESENT";
|
||||||
/* CARD_IO_ERROR means for three consecutive times there was SIM IO error */
|
/* 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 = "CARD_IO_ERROR";
|
||||||
/* CARD_RESTRICTED means card is present but not usable due to carrier restrictions */
|
/* 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 = "CARD_RESTRICTED";
|
||||||
/* LOCKED means ICC is locked by pin or by network */
|
/* 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 = "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 */
|
/* READY means ICC is ready to access */
|
||||||
public static final String INTENT_VALUE_ICC_READY = "READY";
|
public static final String INTENT_VALUE_ICC_READY = "READY";
|
||||||
/* IMSI means ICC IMSI is ready in property */
|
/* IMSI means ICC IMSI is ready in property */
|
||||||
@@ -77,7 +75,8 @@ public class IccCardConstants {
|
|||||||
NOT_READY, /** ordinal(6) == {@See TelephonyManager#SIM_STATE_NOT_READY} */
|
NOT_READY, /** ordinal(6) == {@See TelephonyManager#SIM_STATE_NOT_READY} */
|
||||||
PERM_DISABLED, /** ordinal(7) == {@See TelephonyManager#SIM_STATE_PERM_DISABLED} */
|
PERM_DISABLED, /** ordinal(7) == {@See TelephonyManager#SIM_STATE_PERM_DISABLED} */
|
||||||
CARD_IO_ERROR, /** ordinal(8) == {@See TelephonyManager#SIM_STATE_CARD_IO_ERROR} */
|
CARD_IO_ERROR, /** ordinal(8) == {@See TelephonyManager#SIM_STATE_CARD_IO_ERROR} */
|
||||||
CARD_RESTRICTED;/** ordinal(9) == {@See TelephonyManager#SIM_STATE_CARD_RESTRICTED} */
|
CARD_RESTRICTED,/** ordinal(9) == {@See TelephonyManager#SIM_STATE_CARD_RESTRICTED} */
|
||||||
|
LOADED; /** ordinal(9) == {@See TelephonyManager#SIM_STATE_LOADED} */
|
||||||
|
|
||||||
public boolean isPinLocked() {
|
public boolean isPinLocked() {
|
||||||
return ((this == PIN_REQUIRED) || (this == PUK_REQUIRED));
|
return ((this == PIN_REQUIRED) || (this == PUK_REQUIRED));
|
||||||
@@ -85,9 +84,9 @@ public class IccCardConstants {
|
|||||||
|
|
||||||
public boolean iccCardExist() {
|
public boolean iccCardExist() {
|
||||||
return ((this == PIN_REQUIRED) || (this == PUK_REQUIRED)
|
return ((this == PIN_REQUIRED) || (this == PUK_REQUIRED)
|
||||||
|| (this == NETWORK_LOCKED) || (this == READY)
|
|| (this == NETWORK_LOCKED) || (this == READY) || (this == NOT_READY)
|
||||||
|| (this == PERM_DISABLED) || (this == CARD_IO_ERROR)
|
|| (this == PERM_DISABLED) || (this == CARD_IO_ERROR)
|
||||||
|| (this == CARD_RESTRICTED));
|
|| (this == CARD_RESTRICTED) || (this == LOADED));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static State intToState(int state) throws IllegalArgumentException {
|
public static State intToState(int state) throws IllegalArgumentException {
|
||||||
@@ -102,6 +101,7 @@ public class IccCardConstants {
|
|||||||
case 7: return PERM_DISABLED;
|
case 7: return PERM_DISABLED;
|
||||||
case 8: return CARD_IO_ERROR;
|
case 8: return CARD_IO_ERROR;
|
||||||
case 9: return CARD_RESTRICTED;
|
case 9: return CARD_RESTRICTED;
|
||||||
|
case 10: return LOADED;
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user