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

Commit 1350309e authored by Brad Ebinger's avatar Brad Ebinger Committed by Android (Google) Code Review
Browse files

Merge "Resolve the SIM call manager per subId" into qt-dev

parents d204d6c3 5caefbff
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -80,12 +80,16 @@ public class MobileNetworkUtils {
    }

    /**
     * Returns true if Wifi calling is enabled for at least one phone.
     * Returns true if Wifi calling is enabled for at least one subscription.
     */
    public static boolean isWifiCallingEnabled(Context context) {
        int phoneCount = context.getSystemService(TelephonyManager.class).getPhoneCount();
        for (int i = 0; i < phoneCount; i++) {
            if (isWifiCallingEnabled(context, i)) {
        SubscriptionManager subManager = context.getSystemService(SubscriptionManager.class);
        if (subManager == null) {
            Log.e(TAG, "isWifiCallingEnabled: couldn't get system service.");
            return false;
        }
        for (int subId : subManager.getActiveSubscriptionIdList()) {
            if (isWifiCallingEnabled(context, subId)) {
                return true;
            }
        }
@@ -93,11 +97,12 @@ public class MobileNetworkUtils {
    }

    /**
     * Returns true if Wifi calling is enabled for the specific phone with id {@code phoneId}.
     * Returns true if Wifi calling is enabled for the specific subscription with id {@code subId}.
     */
    public static boolean isWifiCallingEnabled(Context context, int phoneId) {
    public static boolean isWifiCallingEnabled(Context context, int subId) {
        final PhoneAccountHandle simCallManager =
                TelecomManager.from(context).getSimCallManager();
                TelecomManager.from(context).getSimCallManagerForSubscription(subId);
        final int phoneId = SubscriptionManager.getSlotIndex(subId);

        boolean isWifiCallingEnabled;
        if (simCallManager != null) {
+1 −2
Original line number Diff line number Diff line
@@ -63,8 +63,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC
    @Override
    public int getAvailabilityStatus(int subId) {
        return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
                && MobileNetworkUtils.isWifiCallingEnabled(mContext,
                SubscriptionManager.getPhoneId(subId))
                && MobileNetworkUtils.isWifiCallingEnabled(mContext, subId)
                && isVideoCallEnabled(subId)
                ? AVAILABLE
                : CONDITIONALLY_UNAVAILABLE;
+3 −3
Original line number Diff line number Diff line
@@ -68,7 +68,6 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
        super(context, key);
        mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
        mTelephonyManager = context.getSystemService(TelephonyManager.class);
        mSimCallManager = context.getSystemService(TelecomManager.class).getSimCallManager();
        mPhoneStateListener = new PhoneCallStateListener(Looper.getMainLooper());
        mEditableWfcRoamingMode = true;
        mUseWfcHomeModeForRoaming = false;
@@ -77,8 +76,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
    @Override
    public int getAvailabilityStatus(int subId) {
        return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
                && MobileNetworkUtils.isWifiCallingEnabled(mContext,
                SubscriptionManager.getPhoneId(subId))
                && MobileNetworkUtils.isWifiCallingEnabled(mContext, subId)
                ? AVAILABLE
                : UNSUPPORTED_ON_DEVICE;
    }
@@ -155,6 +153,8 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
        mSubId = subId;
        mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
        mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
        mSimCallManager = mContext.getSystemService(TelecomManager.class)
                .getSimCallManagerForSubscription(mSubId);
        if (mCarrierConfigManager != null) {
            final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
            if (carrierConfig != null) {