From 5d22b5c5fed7e3be2072ebd74918c3718618f15e Mon Sep 17 00:00:00 2001 From: Brad Ebinger Date: Tue, 7 May 2019 10:55:55 -0700 Subject: [PATCH] Make getSimCallManager msim aware When there are multiple subscriptions available, the SIM call manager is currently resolved based on what the default voice subscription is. Add the ability for TelecomManager to get the SIM call manager for a Telephony subscription ID. Test: Manual; atest TelecomUnitTests Bug: 131627085 Merged-In: I77fecbad6bc8f2c39a755ae0d2d2343d7a0b5db9 Change-Id: I748fcebb44f07fbc9deef0c6a07d2f15a44b22d3 --- .../java/android/telecom/TelecomManager.java | 45 +++++++++++++++---- .../internal/telecom/ITelecomService.aidl | 2 +- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index a8d70a67d2eed..1f701587412e2 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -32,6 +32,7 @@ import android.os.Build; import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; +import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; @@ -848,15 +849,18 @@ public class TelecomManager { /** * Returns the current SIM call manager. Apps must be prepared for this method to return - * {@code null}, indicating that there currently exists no user-chosen default - * {@code PhoneAccount}. + * {@code null}, indicating that there currently exists no SIM call manager {@link PhoneAccount} + * for the default voice subscription. * - * @return The phone account handle of the current sim call manager. + * @return The phone account handle of the current sim call manager for the default voice + * subscription. + * @see SubscriptionManager#getDefaultVoiceSubscriptionId() */ public PhoneAccountHandle getSimCallManager() { try { if (isServiceConnected()) { - return getTelecomService().getSimCallManager(); + return getTelecomService().getSimCallManager( + SubscriptionManager.getDefaultSubscriptionId()); } } catch (RemoteException e) { Log.e(TAG, "Error calling ITelecomService#getSimCallManager"); @@ -865,9 +869,32 @@ public class TelecomManager { } /** - * Returns the current SIM call manager for the specified user. Apps must be prepared for this - * method to return {@code null}, indicating that there currently exists no user-chosen default - * {@code PhoneAccount}. + * Returns current SIM call manager for the Telephony Subscription ID specified. Apps must be + * prepared for this method to return {@code null}, indicating that there currently exists no + * SIM call manager {@link PhoneAccount} for the subscription specified. + * + * @param subscriptionId The Telephony Subscription ID that the SIM call manager should be + * queried for. + * @return The phone account handle of the current sim call manager. + * @see SubscriptionManager#getActiveSubscriptionInfoList() + * @hide + */ + public PhoneAccountHandle getSimCallManagerForSubscription(int subscriptionId) { + try { + if (isServiceConnected()) { + return getTelecomService().getSimCallManager(subscriptionId); + } + } catch (RemoteException e) { + Log.e(TAG, "Error calling ITelecomService#getSimCallManager"); + } + return null; + } + + /** + * Returns the current SIM call manager for the user-chosen default Telephony Subscription ID + * (see {@link SubscriptionManager#getDefaultSubscriptionId()}) and the specified user. Apps + * must be prepared for this method to return {@code null}, indicating that there currently + * exists no SIM call manager {@link PhoneAccount} for the default voice subscription. * * @return The phone account handle of the current sim call manager. * @@ -888,8 +915,8 @@ public class TelecomManager { /** * Returns the current connection manager. Apps must be prepared for this method to return - * {@code null}, indicating that there currently exists no user-chosen default - * {@code PhoneAccount}. + * {@code null}, indicating that there currently exists no Connection Manager + * {@link PhoneAccount} for the default voice subscription. * * @return The phone account handle of the current connection manager. * @hide diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl index a814c03ff9ada..bdd4bb38fa58a 100644 --- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl +++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl @@ -97,7 +97,7 @@ interface ITelecomService { /** * @see TelecomServiceImpl#getSimCallManager */ - PhoneAccountHandle getSimCallManager(); + PhoneAccountHandle getSimCallManager(int subId); /** * @see TelecomServiceImpl#getSimCallManagerForUser