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

Commit 95e8a679 authored by Nancy Chen's avatar Nancy Chen
Browse files

Handle MMI for multi-SIM (1/3)

+ Add Telecomm and Telephony methods for handlePinMMIForSubscriber
+ Add Select Account dialog in Dialer for MMI

Bug: 17917937

Change-Id: I26fdc68a07ca0483bf7a052598fe31b1461fd486
parent 425b1dc8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -28387,6 +28387,7 @@ package android.telecom {
    method public android.telecom.PhoneAccount getPhoneAccount(android.telecom.PhoneAccountHandle);
    method public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsForPackage();
    method public boolean handleMmi(java.lang.String);
    method public boolean handleMmi(android.telecom.PhoneAccountHandle, java.lang.String);
    method public boolean hasMultipleCallCapableAccounts();
    method public boolean isInCall();
    method public void registerPhoneAccount(android.telecom.PhoneAccount);
+26 −0
Original line number Diff line number Diff line
@@ -876,6 +876,7 @@ public class TelecomManager {
     * Processes the specified dial string as an MMI code.
     * MMI codes are any sequence of characters entered into the dialpad that contain a "*" or "#".
     * Some of these sequences launch special behavior through handled by Telephony.
     * This method uses the default subscription.
     * <p>
     * Requires that the method-caller be set as the system dialer app.
     * </p>
@@ -895,6 +896,31 @@ public class TelecomManager {
        return false;
    }

    /**
     * Processes the specified dial string as an MMI code.
     * MMI codes are any sequence of characters entered into the dialpad that contain a "*" or "#".
     * Some of these sequences launch special behavior through handled by Telephony.
     * <p>
     * Requires that the method-caller be set as the system dialer app.
     * </p>
     *
     * @param accountHandle The handle for the account the MMI code should apply to.
     * @param dialString The digits to dial.
     * @return True if the digits were processed as an MMI code, false otherwise.
     *
     */
    public boolean handleMmi(PhoneAccountHandle accountHandle, String dialString) {
        ITelecomService service = getTelecomService();
        if (service != null) {
            try {
                return service.handlePinMmiForPhoneAccount(accountHandle, dialString);
            } catch (RemoteException e) {
                Log.e(TAG, "Error calling ITelecomService#handlePinMmi", e);
            }
        }
        return false;
    }

    /**
     * Removes the missed-call notification if one is present.
     * <p>
+5 −0
Original line number Diff line number Diff line
@@ -168,6 +168,11 @@ interface ITelecomService {
     */
    boolean handlePinMmi(String dialString);

    /**
     * @see TelecomServiceImpl#handleMmi
     */
    boolean handlePinMmiForPhoneAccount(in PhoneAccountHandle accountHandle, String dialString);

    /**
     * @see TelecomServiceImpl#isTtySupported
     */
+11 −0
Original line number Diff line number Diff line
@@ -3334,6 +3334,17 @@ public class TelephonyManager {
        return false;
    }

    /** @hide */
    @SystemApi
    public boolean handlePinMmiForSubscriber(int subId, String dialString) {
        try {
            return getITelephony().handlePinMmiForSubscriber(subId, dialString);
        } catch (RemoteException e) {
            Log.e(TAG, "Error calling ITelephony#handlePinMmi", e);
        }
        return false;
    }

    /** @hide */
    @SystemApi
    public void toggleRadioOnOff() {