Merge "Provide an API to make USSD calls and read the responses."

This commit is contained in:
Pankaj Kanwar
2017-04-25 16:08:25 +00:00
committed by Gerrit Code Review
5 changed files with 34 additions and 16 deletions

View File

@@ -38227,6 +38227,7 @@ package android.telephony {
method public void listen(android.telephony.PhoneStateListener, int);
method public java.lang.String sendEnvelopeWithStatus(java.lang.String);
method public void sendUssdRequest(java.lang.String, android.telephony.TelephonyManager.OnReceiveUssdResponseCallback, android.os.Handler);
method public void sendUssdRequest(java.lang.String, int, android.telephony.TelephonyManager.OnReceiveUssdResponseCallback, android.os.Handler);
method public void setDataEnabled(boolean);
method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String);
method public boolean setOperatorBrandOverride(java.lang.String);

View File

@@ -41452,6 +41452,7 @@ package android.telephony {
method public boolean needsOtaServiceProvisioning();
method public java.lang.String sendEnvelopeWithStatus(java.lang.String);
method public void sendUssdRequest(java.lang.String, android.telephony.TelephonyManager.OnReceiveUssdResponseCallback, android.os.Handler);
method public void sendUssdRequest(java.lang.String, int, android.telephony.TelephonyManager.OnReceiveUssdResponseCallback, android.os.Handler);
method public int setAllowedCarriers(int, java.util.List<android.service.carrier.CarrierIdentifier>);
method public void setDataEnabled(boolean);
method public void setDataEnabled(int, boolean);

View File

@@ -38326,6 +38326,7 @@ package android.telephony {
method public void listen(android.telephony.PhoneStateListener, int);
method public java.lang.String sendEnvelopeWithStatus(java.lang.String);
method public void sendUssdRequest(java.lang.String, android.telephony.TelephonyManager.OnReceiveUssdResponseCallback, android.os.Handler);
method public void sendUssdRequest(java.lang.String, int, android.telephony.TelephonyManager.OnReceiveUssdResponseCallback, android.os.Handler);
method public void setDataEnabled(boolean);
method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String);
method public boolean setOperatorBrandOverride(java.lang.String);

View File

@@ -5006,32 +5006,46 @@ public class TelephonyManager {
/* <p>Requires permission:
* @link android.Manifest.permission#CALL_PHONE}
* @param ussdRequest the USSD command to be executed.
* @param wrappedCallback receives a callback result.
*/
@RequiresPermission(android.Manifest.permission.CALL_PHONE)
public void sendUssdRequest(String ussdRequest,
final OnReceiveUssdResponseCallback callback, Handler handler) {
checkNotNull(callback, "OnReceiveUssdResponseCallback cannot be null.");
sendUssdRequest(ussdRequest, getSubId(), callback, handler);
}
ResultReceiver wrappedCallback = new ResultReceiver(handler) {
@Override
protected void onReceiveResult(int resultCode, Bundle ussdResponse) {
Rlog.d(TAG, "USSD:" + resultCode);
checkNotNull(ussdResponse, "ussdResponse cannot be null.");
UssdResponse response = ussdResponse.getParcelable(USSD_RESPONSE);
/* <p>Requires permission:
* @link android.Manifest.permission#CALL_PHONE}
* @param subId The subscription to use.
* @param ussdRequest the USSD command to be executed.
* @param wrappedCallback receives a callback result.
*/
@RequiresPermission(android.Manifest.permission.CALL_PHONE)
public void sendUssdRequest(String ussdRequest, int subId,
final OnReceiveUssdResponseCallback callback, Handler handler) {
checkNotNull(callback, "OnReceiveUssdResponseCallback cannot be null.");
if (resultCode == USSD_RETURN_SUCCESS) {
callback.onReceiveUssdResponse(response.getUssdRequest(),
response.getReturnMessage());
} else {
callback.onReceiveUssdResponseFailed(response.getUssdRequest(), resultCode);
}
}
ResultReceiver wrappedCallback = new ResultReceiver(handler) {
@Override
protected void onReceiveResult(int resultCode, Bundle ussdResponse) {
Rlog.d(TAG, "USSD:" + resultCode);
checkNotNull(ussdResponse, "ussdResponse cannot be null.");
UssdResponse response = ussdResponse.getParcelable(USSD_RESPONSE);
if (resultCode == USSD_RETURN_SUCCESS) {
callback.onReceiveUssdResponse(response.getUssdRequest(),
response.getReturnMessage());
} else {
callback.onReceiveUssdResponseFailed(response.getUssdRequest(), resultCode);
}
}
};
try {
ITelephony telephony = getITelephony();
if (telephony != null) {
telephony.handleUssdRequest(ussdRequest, wrappedCallback);
telephony.handleUssdRequest(subId, ussdRequest, wrappedCallback);
}
} catch (RemoteException e) {
Log.e(TAG, "Error calling ITelephony#sendUSSDCode", e);

View File

@@ -277,10 +277,11 @@ interface ITelephony {
/**
* Handles USSD commands.
*
* @param subId The subscription to use.
* @param ussdRequest the USSD command to be executed.
* @param wrappedCallback receives a callback result.
*/
void handleUssdRequest(String ussdRequest, in ResultReceiver wrappedCallback);
void handleUssdRequest(int subId, String ussdRequest, in ResultReceiver wrappedCallback);
/**
* Handles PIN MMI commands (PIN/PIN2/PUK/PUK2), which are initiated