diff options
| author | 2019-09-09 17:58:52 +0000 | |
|---|---|---|
| committer | 2019-09-09 17:58:52 +0000 | |
| commit | 4ed6876df18c45a7264ebca41e8efca8e1e98758 (patch) | |
| tree | 7806edf65ee7f786dce1450adc9d891f86f46e9a | |
| parent | 036ea39d96babb6c8a20464319903aea130e1a5f (diff) | |
| parent | 9f2c596505f90507b14aad46181271131ebf156c (diff) | |
Merge "Add TelephonyManager APIs to take physical slotIndex - getSimCardState - getSimApplicationState"
| -rw-r--r-- | api/system-current.txt | 2 | ||||
| -rw-r--r-- | telephony/java/android/telephony/TelephonyManager.java | 92 |
2 files changed, 86 insertions, 8 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 09737e880ec4..8c222b6175c2 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -8129,7 +8129,9 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getPreferredNetworkTypeBitmask(); method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public int getRadioPowerState(); method public int getSimApplicationState(); + method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSimApplicationState(int); method public int getSimCardState(); + method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSimCardState(int); method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Locale getSimLocale(); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getSupportedRadioAccessFamily(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms(); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index b830860dbc50..74c6d5df9267 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -3083,19 +3083,62 @@ public class TelephonyManager { */ @SystemApi public int getSimCardState() { - int simCardState = getSimState(); - switch (simCardState) { + int simState = getSimState(); + return getSimCardStateFromSimState(simState); + } + + /** + * Returns a constant indicating the state of the device SIM card in a physical slot. + * + * @param physicalSlotIndex physical slot index + * + * @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 + @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) + public int getSimCardState(int physicalSlotIndex) { + int simState = getSimState(getLogicalSlotIndex(physicalSlotIndex)); + return getSimCardStateFromSimState(simState); + } + + /** + * Converts SIM state to SIM card state. + * @param simState + * @return SIM card state + */ + private int getSimCardStateFromSimState(int simState) { + switch (simState) { case SIM_STATE_UNKNOWN: case SIM_STATE_ABSENT: case SIM_STATE_CARD_IO_ERROR: case SIM_STATE_CARD_RESTRICTED: - return simCardState; + return simState; default: return SIM_STATE_PRESENT; } } /** + * Converts a physical slot index to logical slot index. + * @param physicalSlotIndex physical slot index + * @return logical slot index + */ + private int getLogicalSlotIndex(int physicalSlotIndex) { + UiccSlotInfo[] slotInfos = getUiccSlotsInfo(); + if (slotInfos != null && physicalSlotIndex >= 0 && physicalSlotIndex < slotInfos.length) { + return slotInfos[physicalSlotIndex].getLogicalSlotIdx(); + } + + return SubscriptionManager.INVALID_SIM_SLOT_INDEX; + } + + /** * Returns a constant indicating the state of the card applications on the default SIM card. * * @see #SIM_STATE_UNKNOWN @@ -3110,8 +3153,41 @@ public class TelephonyManager { */ @SystemApi public int getSimApplicationState() { - int simApplicationState = getSimStateIncludingLoaded(); - switch (simApplicationState) { + int simState = getSimStateIncludingLoaded(); + return getSimApplicationStateFromSimState(simState); + } + + /** + * Returns a constant indicating the state of the card applications on the device SIM card in + * a physical slot. + * + * @param physicalSlotIndex physical slot index + * + * @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 + @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) + public int getSimApplicationState(int physicalSlotIndex) { + int simState = + SubscriptionManager.getSimStateForSlotIndex(getLogicalSlotIndex(physicalSlotIndex)); + return getSimApplicationStateFromSimState(simState); + } + + /** + * Converts SIM state to SIM application state. + * @param simState + * @return SIM application state + */ + private int getSimApplicationStateFromSimState(int simState) { + switch (simState) { case SIM_STATE_UNKNOWN: case SIM_STATE_ABSENT: case SIM_STATE_CARD_IO_ERROR: @@ -3122,14 +3198,14 @@ public class TelephonyManager { // NOT_READY to either LOCKED or LOADED. return SIM_STATE_NOT_READY; default: - return simApplicationState; + return simState; } } /** - * Returns a constant indicating the state of the device SIM card in a slot. + * Returns a constant indicating the state of the device SIM card in a logical slot. * - * @param slotIndex + * @param slotIndex logical slot index * * @see #SIM_STATE_UNKNOWN * @see #SIM_STATE_ABSENT |