Merge "DO NOT MERGE: Add subscription specific TelephonyManager calls." into mm-wireless-dev

This commit is contained in:
Shishir Agrawal
2016-02-23 22:59:23 +00:00
committed by Android Partner Code Review
4 changed files with 251 additions and 21 deletions

View File

@@ -31175,12 +31175,18 @@ package android.telephony {
method public java.lang.String getVoiceMailNumber(int); method public java.lang.String getVoiceMailNumber(int);
method public int getVoiceNetworkType(int); method public int getVoiceNetworkType(int);
method public boolean hasCarrierPrivileges(); method public boolean hasCarrierPrivileges();
method public boolean hasCarrierPrivileges(int);
method public boolean hasIccCard(); method public boolean hasIccCard();
method public boolean iccCloseLogicalChannel(int); method public boolean iccCloseLogicalChannel(int);
method public boolean iccCloseLogicalChannel(int, int);
method public byte[] iccExchangeSimIO(int, int, int, int, int, java.lang.String); method public byte[] iccExchangeSimIO(int, int, int, int, int, java.lang.String);
method public byte[] iccExchangeSimIO(int, int, int, int, int, int, java.lang.String);
method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String); method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String);
method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(int, java.lang.String);
method public java.lang.String iccTransmitApduBasicChannel(int, int, int, int, int, java.lang.String); method public java.lang.String iccTransmitApduBasicChannel(int, int, int, int, int, java.lang.String);
method public java.lang.String iccTransmitApduBasicChannel(int, int, int, int, int, int, java.lang.String);
method public java.lang.String iccTransmitApduLogicalChannel(int, int, int, int, int, int, java.lang.String); method public java.lang.String iccTransmitApduLogicalChannel(int, int, int, int, int, int, java.lang.String);
method public java.lang.String iccTransmitApduLogicalChannel(int, int, int, int, int, int, int, java.lang.String);
method public boolean isHearingAidCompatibilitySupported(); method public boolean isHearingAidCompatibilitySupported();
method public boolean isNetworkRoaming(); method public boolean isNetworkRoaming();
method public boolean isNetworkRoaming(int); method public boolean isNetworkRoaming(int);
@@ -31190,10 +31196,13 @@ package android.telephony {
method public boolean isWorldPhone(); method public boolean isWorldPhone();
method public void listen(android.telephony.PhoneStateListener, int); method public void listen(android.telephony.PhoneStateListener, int);
method public java.lang.String sendEnvelopeWithStatus(java.lang.String); method public java.lang.String sendEnvelopeWithStatus(java.lang.String);
method public java.lang.String sendEnvelopeWithStatus(int, java.lang.String);
method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String); method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String);
method public boolean setLine1NumberForDisplay(int, java.lang.String, java.lang.String); method public boolean setLine1NumberForDisplay(int, java.lang.String, java.lang.String);
method public boolean setOperatorBrandOverride(java.lang.String); method public boolean setOperatorBrandOverride(java.lang.String);
method public boolean setOperatorBrandOverride(int, java.lang.String);
method public boolean setPreferredNetworkTypeToGlobal(); method public boolean setPreferredNetworkTypeToGlobal();
method public boolean setPreferredNetworkTypeToGlobal(int);
method public boolean setVoiceMailNumber(java.lang.String, java.lang.String); method public boolean setVoiceMailNumber(java.lang.String, java.lang.String);
method public boolean setVoiceMailNumber(int, java.lang.String, java.lang.String); method public boolean setVoiceMailNumber(int, java.lang.String, java.lang.String);
field public static final java.lang.String ACTION_CONFIGURE_VOICEMAIL = "android.telephony.action.CONFIGURE_VOICEMAIL"; field public static final java.lang.String ACTION_CONFIGURE_VOICEMAIL = "android.telephony.action.CONFIGURE_VOICEMAIL";

View File

@@ -33473,12 +33473,18 @@ package android.telephony {
method public boolean handlePinMmi(java.lang.String); method public boolean handlePinMmi(java.lang.String);
method public boolean handlePinMmiForSubscriber(int, java.lang.String); method public boolean handlePinMmiForSubscriber(int, java.lang.String);
method public boolean hasCarrierPrivileges(); method public boolean hasCarrierPrivileges();
method public boolean hasCarrierPrivileges(int);
method public boolean hasIccCard(); method public boolean hasIccCard();
method public boolean iccCloseLogicalChannel(int); method public boolean iccCloseLogicalChannel(int);
method public boolean iccCloseLogicalChannel(int, int);
method public byte[] iccExchangeSimIO(int, int, int, int, int, java.lang.String); method public byte[] iccExchangeSimIO(int, int, int, int, int, java.lang.String);
method public byte[] iccExchangeSimIO(int, int, int, int, int, int, java.lang.String);
method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String); method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String);
method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(int, java.lang.String);
method public java.lang.String iccTransmitApduBasicChannel(int, int, int, int, int, java.lang.String); method public java.lang.String iccTransmitApduBasicChannel(int, int, int, int, int, java.lang.String);
method public java.lang.String iccTransmitApduBasicChannel(int, int, int, int, int, int, java.lang.String);
method public java.lang.String iccTransmitApduLogicalChannel(int, int, int, int, int, int, java.lang.String); method public java.lang.String iccTransmitApduLogicalChannel(int, int, int, int, int, int, java.lang.String);
method public java.lang.String iccTransmitApduLogicalChannel(int, int, int, int, int, int, int, java.lang.String);
method public boolean isDataConnectivityPossible(); method public boolean isDataConnectivityPossible();
method public boolean isHearingAidCompatibilitySupported(); method public boolean isHearingAidCompatibilitySupported();
method public boolean isIdle(); method public boolean isIdle();
@@ -33496,12 +33502,15 @@ package android.telephony {
method public void listen(android.telephony.PhoneStateListener, int); method public void listen(android.telephony.PhoneStateListener, int);
method public boolean needsOtaServiceProvisioning(); method public boolean needsOtaServiceProvisioning();
method public java.lang.String sendEnvelopeWithStatus(java.lang.String); method public java.lang.String sendEnvelopeWithStatus(java.lang.String);
method public java.lang.String sendEnvelopeWithStatus(int, java.lang.String);
method public void setDataEnabled(boolean); method public void setDataEnabled(boolean);
method public void setDataEnabled(int, boolean); method public void setDataEnabled(int, boolean);
method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String); method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String);
method public boolean setLine1NumberForDisplay(int, java.lang.String, java.lang.String); method public boolean setLine1NumberForDisplay(int, java.lang.String, java.lang.String);
method public boolean setOperatorBrandOverride(java.lang.String); method public boolean setOperatorBrandOverride(java.lang.String);
method public boolean setOperatorBrandOverride(int, java.lang.String);
method public boolean setPreferredNetworkTypeToGlobal(); method public boolean setPreferredNetworkTypeToGlobal();
method public boolean setPreferredNetworkTypeToGlobal(int);
method public boolean setRadio(boolean); method public boolean setRadio(boolean);
method public boolean setRadioPower(boolean); method public boolean setRadioPower(boolean);
method public boolean setVoiceMailNumber(java.lang.String, java.lang.String); method public boolean setVoiceMailNumber(java.lang.String, java.lang.String);

View File

@@ -2929,10 +2929,27 @@ public class TelephonyManager {
* @return an IccOpenLogicalChannelResponse object. * @return an IccOpenLogicalChannelResponse object.
*/ */
public IccOpenLogicalChannelResponse iccOpenLogicalChannel(String AID) { public IccOpenLogicalChannelResponse iccOpenLogicalChannel(String AID) {
return iccOpenLogicalChannel(getDefaultSubscription(), AID);
}
/**
* Opens a logical channel to the ICC card.
*
* Input parameters equivalent to TS 27.007 AT+CCHO command.
*
* <p>Requires Permission:
* {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
* Or the calling app has carrier privileges. @see #hasCarrierPrivileges
*
* @param subId The subscription to use.
* @param AID Application id. See ETSI 102.221 and 101.220.
* @return an IccOpenLogicalChannelResponse object.
*/
public IccOpenLogicalChannelResponse iccOpenLogicalChannel(int subId, String AID) {
try { try {
ITelephony telephony = getITelephony(); ITelephony telephony = getITelephony();
if (telephony != null) if (telephony != null)
return telephony.iccOpenLogicalChannel(AID); return telephony.iccOpenLogicalChannel(subId, AID);
} catch (RemoteException ex) { } catch (RemoteException ex) {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
} }
@@ -2953,10 +2970,28 @@ public class TelephonyManager {
* @return true if the channel was closed successfully. * @return true if the channel was closed successfully.
*/ */
public boolean iccCloseLogicalChannel(int channel) { public boolean iccCloseLogicalChannel(int channel) {
return iccCloseLogicalChannel(getDefaultSubscription(), channel);
}
/**
* Closes a previously opened logical channel to the ICC card.
*
* Input parameters equivalent to TS 27.007 AT+CCHC command.
*
* <p>Requires Permission:
* {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
* Or the calling app has carrier privileges. @see #hasCarrierPrivileges
*
* @param subId The subscription to use.
* @param channel is the channel id to be closed as retruned by a successful
* iccOpenLogicalChannel.
* @return true if the channel was closed successfully.
*/
public boolean iccCloseLogicalChannel(int subId, int channel) {
try { try {
ITelephony telephony = getITelephony(); ITelephony telephony = getITelephony();
if (telephony != null) if (telephony != null)
return telephony.iccCloseLogicalChannel(channel); return telephony.iccCloseLogicalChannel(subId, channel);
} catch (RemoteException ex) { } catch (RemoteException ex) {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
} }
@@ -2986,10 +3021,38 @@ public class TelephonyManager {
*/ */
public String iccTransmitApduLogicalChannel(int channel, int cla, public String iccTransmitApduLogicalChannel(int channel, int cla,
int instruction, int p1, int p2, int p3, String data) { int instruction, int p1, int p2, int p3, String data) {
return iccTransmitApduLogicalChannel(getDefaultSubscription(), channel, cla,
instruction, p1, p2, p3, data);
}
/**
* Transmit an APDU to the ICC card over a logical channel.
*
* Input parameters equivalent to TS 27.007 AT+CGLA command.
*
* <p>Requires Permission:
* {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
* Or the calling app has carrier privileges. @see #hasCarrierPrivileges
*
* @param subId The subscription to use.
* @param channel is the channel id to be closed as returned by a successful
* iccOpenLogicalChannel.
* @param cla Class of the APDU command.
* @param instruction Instruction of the APDU command.
* @param p1 P1 value of the APDU command.
* @param p2 P2 value of the APDU command.
* @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU
* is sent to the SIM.
* @param data Data to be sent with the APDU.
* @return The APDU response from the ICC card with the status appended at
* the end.
*/
public String iccTransmitApduLogicalChannel(int subId, int channel, int cla,
int instruction, int p1, int p2, int p3, String data) {
try { try {
ITelephony telephony = getITelephony(); ITelephony telephony = getITelephony();
if (telephony != null) if (telephony != null)
return telephony.iccTransmitApduLogicalChannel(channel, cla, return telephony.iccTransmitApduLogicalChannel(subId, channel, cla,
instruction, p1, p2, p3, data); instruction, p1, p2, p3, data);
} catch (RemoteException ex) { } catch (RemoteException ex) {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
@@ -3018,10 +3081,36 @@ public class TelephonyManager {
*/ */
public String iccTransmitApduBasicChannel(int cla, public String iccTransmitApduBasicChannel(int cla,
int instruction, int p1, int p2, int p3, String data) { int instruction, int p1, int p2, int p3, String data) {
return iccTransmitApduBasicChannel(getDefaultSubscription(), cla,
instruction, p1, p2, p3, data);
}
/**
* Transmit an APDU to the ICC card over the basic channel.
*
* Input parameters equivalent to TS 27.007 AT+CSIM command.
*
* <p>Requires Permission:
* {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
* Or the calling app has carrier privileges. @see #hasCarrierPrivileges
*
* @param subId The subscription to use.
* @param cla Class of the APDU command.
* @param instruction Instruction of the APDU command.
* @param p1 P1 value of the APDU command.
* @param p2 P2 value of the APDU command.
* @param p3 P3 value of the APDU command. If p3 is negative a 4 byte APDU
* is sent to the SIM.
* @param data Data to be sent with the APDU.
* @return The APDU response from the ICC card with the status appended at
* the end.
*/
public String iccTransmitApduBasicChannel(int subId, int cla,
int instruction, int p1, int p2, int p3, String data) {
try { try {
ITelephony telephony = getITelephony(); ITelephony telephony = getITelephony();
if (telephony != null) if (telephony != null)
return telephony.iccTransmitApduBasicChannel(cla, return telephony.iccTransmitApduBasicChannel(subId, cla,
instruction, p1, p2, p3, data); instruction, p1, p2, p3, data);
} catch (RemoteException ex) { } catch (RemoteException ex) {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
@@ -3046,10 +3135,31 @@ public class TelephonyManager {
*/ */
public byte[] iccExchangeSimIO(int fileID, int command, int p1, int p2, int p3, public byte[] iccExchangeSimIO(int fileID, int command, int p1, int p2, int p3,
String filePath) { String filePath) {
return iccExchangeSimIO(getDefaultSubscription(), fileID, command, p1, p2, p3, filePath);
}
/**
* Returns the response APDU for a command APDU sent through SIM_IO.
*
* <p>Requires Permission:
* {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
* Or the calling app has carrier privileges. @see #hasCarrierPrivileges
*
* @param subId The subscription to use.
* @param fileID
* @param command
* @param p1 P1 value of the APDU command.
* @param p2 P2 value of the APDU command.
* @param p3 P3 value of the APDU command.
* @param filePath
* @return The APDU response.
*/
public byte[] iccExchangeSimIO(int subId, int fileID, int command, int p1, int p2,
int p3, String filePath) {
try { try {
ITelephony telephony = getITelephony(); ITelephony telephony = getITelephony();
if (telephony != null) if (telephony != null)
return telephony.iccExchangeSimIO(fileID, command, p1, p2, p3, filePath); return telephony.iccExchangeSimIO(subId, fileID, command, p1, p2, p3, filePath);
} catch (RemoteException ex) { } catch (RemoteException ex) {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
} }
@@ -3071,10 +3181,29 @@ public class TelephonyManager {
* returns an empty string. * returns an empty string.
*/ */
public String sendEnvelopeWithStatus(String content) { public String sendEnvelopeWithStatus(String content) {
return sendEnvelopeWithStatus(getDefaultSubscription(), content);
}
/**
* Send ENVELOPE to the SIM and return the response.
*
* <p>Requires Permission:
* {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
* Or the calling app has carrier privileges. @see #hasCarrierPrivileges
*
* @param subId The subscription to use.
* @param content String containing SAT/USAT response in hexadecimal
* format starting with command tag. See TS 102 223 for
* details.
* @return The APDU response from the ICC card in hexadecimal format
* with the last 4 bytes being the status word. If the command fails,
* returns an empty string.
*/
public String sendEnvelopeWithStatus(int subId, String content) {
try { try {
ITelephony telephony = getITelephony(); ITelephony telephony = getITelephony();
if (telephony != null) if (telephony != null)
return telephony.sendEnvelopeWithStatus(content); return telephony.sendEnvelopeWithStatus(subId, content);
} catch (RemoteException ex) { } catch (RemoteException ex) {
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
} }
@@ -3632,8 +3761,20 @@ public class TelephonyManager {
* @return true on success; false on any failure. * @return true on success; false on any failure.
*/ */
public boolean setPreferredNetworkTypeToGlobal() { public boolean setPreferredNetworkTypeToGlobal() {
return setPreferredNetworkType(getDefaultSubscription(), return setPreferredNetworkTypeToGlobal(getDefaultSubscription());
RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA); }
/**
* Set the preferred network type to global mode which includes LTE, CDMA, EvDo and GSM/WCDMA.
*
* <p>
* Requires that the calling app has carrier privileges.
* @see #hasCarrierPrivileges
*
* @return true on success; false on any failure.
*/
public boolean setPreferredNetworkTypeToGlobal(int subId) {
return setPreferredNetworkType(subId, RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
} }
/** /**
@@ -3680,10 +3821,26 @@ public class TelephonyManager {
* @return true if the app has carrier privileges. * @return true if the app has carrier privileges.
*/ */
public boolean hasCarrierPrivileges() { public boolean hasCarrierPrivileges() {
return hasCarrierPrivileges(getDefaultSubscription());
}
/**
* Has the calling application been granted carrier privileges by the carrier.
*
* If any of the packages in the calling UID has carrier privileges, the
* call will return true. This access is granted by the owner of the UICC
* card and does not depend on the registered carrier.
*
* @param subId The subscription to use.
* @return true if the app has carrier privileges.
*/
public boolean hasCarrierPrivileges(int subId) {
try { try {
ITelephony telephony = getITelephony(); ITelephony telephony = getITelephony();
if (telephony != null) if (telephony != null) {
return telephony.getCarrierPrivilegeStatus() == CARRIER_PRIVILEGE_STATUS_HAS_ACCESS; return telephony.getCarrierPrivilegeStatus(subId) ==
CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
}
} catch (RemoteException ex) { } catch (RemoteException ex) {
Rlog.e(TAG, "hasCarrierPrivileges RemoteException", ex); Rlog.e(TAG, "hasCarrierPrivileges RemoteException", ex);
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
@@ -3707,10 +3864,29 @@ public class TelephonyManager {
* @return true if the operation was executed correctly. * @return true if the operation was executed correctly.
*/ */
public boolean setOperatorBrandOverride(String brand) { public boolean setOperatorBrandOverride(String brand) {
return setOperatorBrandOverride(getDefaultSubscription(), brand);
}
/**
* Override the branding for the current ICCID.
*
* Once set, whenever the SIM is present in the device, the service
* provider name (SPN) and the operator name will both be replaced by the
* brand value input. To unset the value, the same function should be
* called with a null brand value.
*
* <p>Requires that the calling app has carrier privileges.
* @see #hasCarrierPrivileges
*
* @param subId The subscription to use.
* @param brand The brand name to display/set.
* @return true if the operation was executed correctly.
*/
public boolean setOperatorBrandOverride(int subId, String brand) {
try { try {
ITelephony telephony = getITelephony(); ITelephony telephony = getITelephony();
if (telephony != null) if (telephony != null)
return telephony.setOperatorBrandOverride(brand); return telephony.setOperatorBrandOverride(subId, brand);
} catch (RemoteException ex) { } catch (RemoteException ex) {
Rlog.e(TAG, "setOperatorBrandOverride RemoteException", ex); Rlog.e(TAG, "setOperatorBrandOverride RemoteException", ex);
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
@@ -3741,10 +3917,37 @@ public class TelephonyManager {
public boolean setRoamingOverride(List<String> gsmRoamingList, public boolean setRoamingOverride(List<String> gsmRoamingList,
List<String> gsmNonRoamingList, List<String> cdmaRoamingList, List<String> gsmNonRoamingList, List<String> cdmaRoamingList,
List<String> cdmaNonRoamingList) { List<String> cdmaNonRoamingList) {
return setRoamingOverride(getDefaultSubscription(), gsmRoamingList, gsmNonRoamingList,
cdmaRoamingList, cdmaNonRoamingList);
}
/**
* Override the roaming preference for the current ICCID.
*
* Using this call, the carrier app (see #hasCarrierPrivileges) can override
* the platform's notion of a network operator being considered roaming or not.
* The change only affects the ICCID that was active when this call was made.
*
* If null is passed as any of the input, the corresponding value is deleted.
*
* <p>Requires that the caller have carrier privilege. See #hasCarrierPrivileges.
*
* @param subId for which the roaming overrides apply.
* @param gsmRoamingList - List of MCCMNCs to be considered roaming for 3GPP RATs.
* @param gsmNonRoamingList - List of MCCMNCs to be considered not roaming for 3GPP RATs.
* @param cdmaRoamingList - List of SIDs to be considered roaming for 3GPP2 RATs.
* @param cdmaNonRoamingList - List of SIDs to be considered not roaming for 3GPP2 RATs.
* @return true if the operation was executed correctly.
*
* @hide
*/
public boolean setRoamingOverride(int subId, List<String> gsmRoamingList,
List<String> gsmNonRoamingList, List<String> cdmaRoamingList,
List<String> cdmaNonRoamingList) {
try { try {
ITelephony telephony = getITelephony(); ITelephony telephony = getITelephony();
if (telephony != null) if (telephony != null)
return telephony.setRoamingOverride(gsmRoamingList, gsmNonRoamingList, return telephony.setRoamingOverride(subId, gsmRoamingList, gsmNonRoamingList,
cdmaRoamingList, cdmaNonRoamingList); cdmaRoamingList, cdmaNonRoamingList);
} catch (RemoteException ex) { } catch (RemoteException ex) {
Rlog.e(TAG, "setRoamingOverride RemoteException", ex); Rlog.e(TAG, "setRoamingOverride RemoteException", ex);

View File

@@ -543,27 +543,30 @@ interface ITelephony {
* *
* Input parameters equivalent to TS 27.007 AT+CCHO command. * Input parameters equivalent to TS 27.007 AT+CCHO command.
* *
* @param subId The subscription to use.
* @param AID Application id. See ETSI 102.221 and 101.220. * @param AID Application id. See ETSI 102.221 and 101.220.
* @return an IccOpenLogicalChannelResponse object. * @return an IccOpenLogicalChannelResponse object.
*/ */
IccOpenLogicalChannelResponse iccOpenLogicalChannel(String AID); IccOpenLogicalChannelResponse iccOpenLogicalChannel(int subId, String AID);
/** /**
* Closes a previously opened logical channel to the ICC card. * Closes a previously opened logical channel to the ICC card.
* *
* Input parameters equivalent to TS 27.007 AT+CCHC command. * Input parameters equivalent to TS 27.007 AT+CCHC command.
* *
* @param subId The subscription to use.
* @param channel is the channel id to be closed as retruned by a * @param channel is the channel id to be closed as retruned by a
* successful iccOpenLogicalChannel. * successful iccOpenLogicalChannel.
* @return true if the channel was closed successfully. * @return true if the channel was closed successfully.
*/ */
boolean iccCloseLogicalChannel(int channel); boolean iccCloseLogicalChannel(int subId, int channel);
/** /**
* Transmit an APDU to the ICC card over a logical channel. * Transmit an APDU to the ICC card over a logical channel.
* *
* Input parameters equivalent to TS 27.007 AT+CGLA command. * Input parameters equivalent to TS 27.007 AT+CGLA command.
* *
* @param subId The subscription to use.
* @param channel is the channel id to be closed as retruned by a * @param channel is the channel id to be closed as retruned by a
* successful iccOpenLogicalChannel. * successful iccOpenLogicalChannel.
* @param cla Class of the APDU command. * @param cla Class of the APDU command.
@@ -576,7 +579,7 @@ interface ITelephony {
* @return The APDU response from the ICC card with the status appended at * @return The APDU response from the ICC card with the status appended at
* the end. * the end.
*/ */
String iccTransmitApduLogicalChannel(int channel, int cla, int instruction, String iccTransmitApduLogicalChannel(int subId, int channel, int cla, int instruction,
int p1, int p2, int p3, String data); int p1, int p2, int p3, String data);
/** /**
@@ -584,6 +587,7 @@ interface ITelephony {
* *
* Input parameters equivalent to TS 27.007 AT+CSIM command. * Input parameters equivalent to TS 27.007 AT+CSIM command.
* *
* @param subId The subscription to use.
* @param cla Class of the APDU command. * @param cla Class of the APDU command.
* @param instruction Instruction of the APDU command. * @param instruction Instruction of the APDU command.
* @param p1 P1 value of the APDU command. * @param p1 P1 value of the APDU command.
@@ -594,12 +598,13 @@ interface ITelephony {
* @return The APDU response from the ICC card with the status appended at * @return The APDU response from the ICC card with the status appended at
* the end. * the end.
*/ */
String iccTransmitApduBasicChannel(int cla, int instruction, String iccTransmitApduBasicChannel(int subId, int cla, int instruction,
int p1, int p2, int p3, String data); int p1, int p2, int p3, String data);
/** /**
* Returns the response APDU for a command APDU sent through SIM_IO. * Returns the response APDU for a command APDU sent through SIM_IO.
* *
* @param subId The subscription to use.
* @param fileID * @param fileID
* @param command * @param command
* @param p1 P1 value of the APDU command. * @param p1 P1 value of the APDU command.
@@ -608,12 +613,13 @@ interface ITelephony {
* @param filePath * @param filePath
* @return The APDU response. * @return The APDU response.
*/ */
byte[] iccExchangeSimIO(int fileID, int command, int p1, int p2, int p3, byte[] iccExchangeSimIO(int subId, int fileID, int command, int p1, int p2, int p3,
String filePath); String filePath);
/** /**
* Send ENVELOPE to the SIM and returns the response. * Send ENVELOPE to the SIM and returns the response.
* *
* @param subId The subscription to use.
* @param contents String containing SAT/USAT response in hexadecimal * @param contents String containing SAT/USAT response in hexadecimal
* format starting with command tag. See TS 102 223 for * format starting with command tag. See TS 102 223 for
* details. * details.
@@ -621,7 +627,7 @@ interface ITelephony {
* being the status word. If the command fails, returns an empty * being the status word. If the command fails, returns an empty
* string. * string.
*/ */
String sendEnvelopeWithStatus(String content); String sendEnvelopeWithStatus(int subId, String content);
/** /**
* Read one of the NV items defined in {@link RadioNVItems} / {@code ril_nv_items.h}. * Read one of the NV items defined in {@link RadioNVItems} / {@code ril_nv_items.h}.
@@ -773,9 +779,10 @@ interface ITelephony {
* *
* TODO: Add a link to documentation. * TODO: Add a link to documentation.
* *
* @param subId The subscription to use.
* @return carrier privilege status defined in TelephonyManager. * @return carrier privilege status defined in TelephonyManager.
*/ */
int getCarrierPrivilegeStatus(); int getCarrierPrivilegeStatus(int subId);
/** /**
* Similar to above, but check for the package whose name is pkgName. * Similar to above, but check for the package whose name is pkgName.
@@ -847,10 +854,11 @@ interface ITelephony {
* {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
* or has to be carrier app - see #hasCarrierPrivileges. * or has to be carrier app - see #hasCarrierPrivileges.
* *
* @param subId The subscription to use.
* @param brand The brand name to display/set. * @param brand The brand name to display/set.
* @return true if the operation was executed correctly. * @return true if the operation was executed correctly.
*/ */
boolean setOperatorBrandOverride(String brand); boolean setOperatorBrandOverride(int subId, String brand);
/** /**
* Override the roaming indicator for the current ICCID. * Override the roaming indicator for the current ICCID.
@@ -863,13 +871,14 @@ interface ITelephony {
* *
* <p>Requires that the caller have carrier privilege. See #hasCarrierPrivileges. * <p>Requires that the caller have carrier privilege. See #hasCarrierPrivileges.
* *
* @param subId for which the roaming overrides apply.
* @param gsmRoamingList - List of MCCMNCs to be considered roaming for 3GPP RATs. * @param gsmRoamingList - List of MCCMNCs to be considered roaming for 3GPP RATs.
* @param gsmNonRoamingList - List of MCCMNCs to be considered not roaming for 3GPP RATs. * @param gsmNonRoamingList - List of MCCMNCs to be considered not roaming for 3GPP RATs.
* @param cdmaRoamingList - List of SIDs to be considered roaming for 3GPP2 RATs. * @param cdmaRoamingList - List of SIDs to be considered roaming for 3GPP2 RATs.
* @param cdmaNonRoamingList - List of SIDs to be considered not roaming for 3GPP2 RATs. * @param cdmaNonRoamingList - List of SIDs to be considered not roaming for 3GPP2 RATs.
* @return true if the operation was executed correctly. * @return true if the operation was executed correctly.
*/ */
boolean setRoamingOverride(in List<String> gsmRoamingList, boolean setRoamingOverride(int subId, in List<String> gsmRoamingList,
in List<String> gsmNonRoamingList, in List<String> cdmaRoamingList, in List<String> gsmNonRoamingList, in List<String> cdmaRoamingList,
in List<String> cdmaNonRoamingList); in List<String> cdmaNonRoamingList);