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

Commit e32a2abc authored by Calvin Pan's avatar Calvin Pan
Browse files

Disable smart forwarding based on subid

Smart forwrading did not specify the subid when disabling feature, which
caused always dsiabled on default subid.

Bug: 194112447
Test: Enable/disable smart forwarding
Change-Id: Id900500f065c32b326ca6dfc39482f913fb9b8ff
parent a1fbab88
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.sim.smartForwarding;
import static com.android.settings.sim.smartForwarding.SmartForwardingUtils.TAG;

import android.telephony.CallForwardingInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.Log;

@@ -37,16 +38,29 @@ public class DisableSmartForwardingTask implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < tm.getActiveModemCount(); i++) {
            if (callWaitingStatus != null) {
            int subId = getSubId(i);
            if (callWaitingStatus != null
                    && subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
                Log.d(TAG, "Restore call waiting to " + callWaitingStatus[i]);
                tm.setCallWaitingEnabled(callWaitingStatus[i], null, null);
                tm.createForSubscriptionId(subId)
                        .setCallWaitingEnabled(callWaitingStatus[i], null, null);
            }

            if (callForwardingInfo != null
                    && callForwardingInfo[i] != null) {
                    && callForwardingInfo[i] != null
                    && subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
                Log.d(TAG, "Restore call forwarding to " + callForwardingInfo[i]);
                tm.setCallForwarding(callForwardingInfo[i], null, null);
                tm.createForSubscriptionId(subId)
                        .setCallForwarding(callForwardingInfo[i], null, null);
            }
        }
    }

    private int getSubId(int slotIndex) {
        int[] subId = SubscriptionManager.getSubId(slotIndex);
        if (subId != null && subId.length > 0) {
            return subId[0];
        }
        return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    }
}