From 95e8a679335648388988337fcf08eac325768318 Mon Sep 17 00:00:00 2001 From: Nancy Chen Date: Thu, 16 Oct 2014 18:38:21 -0700 Subject: [PATCH] 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 --- api/current.txt | 1 + .../java/android/telecom/TelecomManager.java | 26 +++++++++++++++++++ .../internal/telecom/ITelecomService.aidl | 5 ++++ .../android/telephony/TelephonyManager.java | 11 ++++++++ 4 files changed, 43 insertions(+) diff --git a/api/current.txt b/api/current.txt index fa02c4e17baa0..633e04933dfbf 100644 --- a/api/current.txt +++ b/api/current.txt @@ -28387,6 +28387,7 @@ package android.telecom { method public android.telecom.PhoneAccount getPhoneAccount(android.telecom.PhoneAccountHandle); method public java.util.List 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); diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index bc51a705619bf..ec7f5e2158976 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -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. *

* Requires that the method-caller be set as the system dialer app. *

@@ -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. + *

+ * Requires that the method-caller be set as the system dialer app. + *

+ * + * @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. *

diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl index 91f44b9a055b0..fd472130deb4f 100644 --- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl +++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl @@ -168,6 +168,11 @@ interface ITelecomService { */ boolean handlePinMmi(String dialString); + /** + * @see TelecomServiceImpl#handleMmi + */ + boolean handlePinMmiForPhoneAccount(in PhoneAccountHandle accountHandle, String dialString); + /** * @see TelecomServiceImpl#isTtySupported */ diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index a3546ed16c458..0246a2da1359f 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -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() {