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

Commit e7833312 authored by Brad Ebinger's avatar Brad Ebinger
Browse files

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
Change-Id: I748fcebb44f07fbc9deef0c6a07d2f15a44b22d3
parent 33e625e5
Loading
Loading
Loading
Loading
+36 −9
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.os.Bundle;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
@@ -849,15 +850,40 @@ 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");
        }
        return null;
    }

    /**
     * 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");
@@ -866,9 +892,10 @@ 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 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.
     *
@@ -889,8 +916,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
+1 −1
Original line number Diff line number Diff line
@@ -97,7 +97,7 @@ interface ITelecomService {
    /**
     * @see TelecomServiceImpl#getSimCallManager
     */
    PhoneAccountHandle getSimCallManager();
    PhoneAccountHandle getSimCallManager(int subId);

    /**
     * @see TelecomServiceImpl#getSimCallManagerForUser