Merge "Provide an API to make USSD calls and read the responses."
This commit is contained in:
committed by
Android (Google) Code Review
commit
f57b084f3b
@@ -37578,6 +37578,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 boolean setLine1NumberForDisplay(java.lang.String, java.lang.String);
|
||||
method public boolean setOperatorBrandOverride(java.lang.String);
|
||||
method public boolean setPreferredNetworkTypeToGlobal();
|
||||
|
||||
@@ -40727,6 +40727,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 void setDataEnabled(boolean);
|
||||
method public void setDataEnabled(int, boolean);
|
||||
method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String);
|
||||
|
||||
@@ -37667,6 +37667,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 boolean setLine1NumberForDisplay(java.lang.String, java.lang.String);
|
||||
method public boolean setOperatorBrandOverride(java.lang.String);
|
||||
method public boolean setPreferredNetworkTypeToGlobal();
|
||||
|
||||
@@ -4650,32 +4650,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);
|
||||
|
||||
@@ -275,10 +275,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
|
||||
|
||||
Reference in New Issue
Block a user