Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f02b7b7b authored by Pankaj Kanwar's avatar Pankaj Kanwar Committed by Gerrit Code Review
Browse files

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

parents 7503b11b 20751db1
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -38226,6 +38226,7 @@ package android.telephony {
    method public boolean isWorldPhone();
    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 setDataEnabled(boolean);
    method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String);
    method public boolean setOperatorBrandOverride(java.lang.String);
@@ -38300,6 +38301,12 @@ package android.telephony {
    field public static final java.lang.String VVM_TYPE_OMTP = "vvm_type_omtp";
  }
  public static abstract class TelephonyManager.OnReceiveUssdResponseCallback {
    ctor public TelephonyManager.OnReceiveUssdResponseCallback();
    method public void onReceiveUssdResponse(java.lang.String, java.lang.CharSequence);
    method public void onReceiveUssdResponseFailed(java.lang.String, int);
  }
}
package android.telephony.cdma {
+7 −0
Original line number Diff line number Diff line
@@ -41451,6 +41451,7 @@ package android.telephony {
    method public void listen(android.telephony.PhoneStateListener, int);
    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 int setAllowedCarriers(int, java.util.List<android.service.carrier.CarrierIdentifier>);
    method public void setDataEnabled(boolean);
    method public void setDataEnabled(int, boolean);
@@ -41546,6 +41547,12 @@ package android.telephony {
    field public static final java.lang.String VVM_TYPE_OMTP = "vvm_type_omtp";
  }
  public static abstract class TelephonyManager.OnReceiveUssdResponseCallback {
    ctor public TelephonyManager.OnReceiveUssdResponseCallback();
    method public void onReceiveUssdResponse(java.lang.String, java.lang.CharSequence);
    method public void onReceiveUssdResponseFailed(java.lang.String, int);
  }
}
package android.telephony.cdma {
+7 −0
Original line number Diff line number Diff line
@@ -38325,6 +38325,7 @@ package android.telephony {
    method public boolean isWorldPhone();
    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 setDataEnabled(boolean);
    method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String);
    method public boolean setOperatorBrandOverride(java.lang.String);
@@ -38399,6 +38400,12 @@ package android.telephony {
    field public static final java.lang.String VVM_TYPE_OMTP = "vvm_type_omtp";
  }
  public static abstract class TelephonyManager.OnReceiveUssdResponseCallback {
    ctor public TelephonyManager.OnReceiveUssdResponseCallback();
    method public void onReceiveUssdResponse(java.lang.String, java.lang.CharSequence);
    method public void onReceiveUssdResponseFailed(java.lang.String, int);
  }
}
package android.telephony.cdma {
+78 −1
Original line number Diff line number Diff line
@@ -16,8 +16,11 @@

package android.telephony;

import static com.android.internal.util.Preconditions.checkNotNull;

import android.annotation.IntDef;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
@@ -28,12 +31,13 @@ import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.BatteryStats;
import android.os.ResultReceiver;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.os.Bundle;
import android.os.Handler;
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.os.ServiceManager;
import android.os.SystemProperties;
import android.service.carrier.CarrierIdentifier;
@@ -838,6 +842,29 @@ public class TelephonyManager {
     */
    public static final String VVM_TYPE_CVVM = "vvm_type_cvvm";

    /**
     * @hide
     */
    public static final String USSD_RESPONSE = "USSD_RESPONSE";

    /**
     * USSD return code success.
     * @hide
     */
    public static final int USSD_RETURN_SUCCESS = 100;

    /**
     * USSD return code for failure case.
     * @hide
     */
    public static final int USSD_RETURN_FAILURE = -1;

    /**
     * USSD return code for failure case.
     * @hide
     */
    public static final int USSD_ERROR_SERVICE_UNAVAIL = -2;

    //
    //
    // Device Info
@@ -4965,6 +4992,56 @@ public class TelephonyManager {
        return new int[0];
    }

    public static abstract class OnReceiveUssdResponseCallback {
       /**
        ** Called when USSD has succeeded.
        **/
       public void onReceiveUssdResponse(String request, CharSequence response) {};

       /**
        ** Called when USSD has failed.
        **/
       public void onReceiveUssdResponseFailed(String request, int failureCode) {};
    }

    /* <p>Requires permission:
     * @link android.Manifest.permission#CALL_PHONE}
     */
    @RequiresPermission(android.Manifest.permission.CALL_PHONE)
    public void sendUssdRequest(String ussdRequest,
                                final OnReceiveUssdResponseCallback callback, Handler handler) {
       checkNotNull(callback, "OnReceiveUssdResponseCallback cannot be null.");

       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);
            }
        } catch (RemoteException e) {
            Log.e(TAG, "Error calling ITelephony#sendUSSDCode", e);
            UssdResponse response = new UssdResponse(ussdRequest, "");
            Bundle returnData = new Bundle();
            returnData.putParcelable(USSD_RESPONSE, response);
            wrappedCallback.send(USSD_ERROR_SERVICE_UNAVAIL, returnData);
        }
    }

    /** @hide */
    @SystemApi
    public boolean handlePinMmi(String dialString) {
+20 −0
Original line number Diff line number Diff line
/*
**
** Copyright 2007, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/

package android.telephony;

parcelable UssdResponse;
Loading