Merge "Add TelephonyManager APIs to take physical slotIndex - getSimCardState - getSimApplicationState"

This commit is contained in:
Treehugger Robot
2019-09-09 17:58:52 +00:00
committed by Gerrit Code Review
2 changed files with 86 additions and 8 deletions

View File

@@ -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();

View File

@@ -3083,18 +3083,61 @@ 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.
*
@@ -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