From e32a2abc16bb9f10017d1dd54a80fe9344d384a9 Mon Sep 17 00:00:00 2001 From: Calvin Pan Date: Mon, 13 Sep 2021 16:42:36 +0800 Subject: [PATCH] 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 --- .../DisableSmartForwardingTask.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/sim/smartForwarding/DisableSmartForwardingTask.java b/src/com/android/settings/sim/smartForwarding/DisableSmartForwardingTask.java index 7826522715d..d483dd12ed2 100644 --- a/src/com/android/settings/sim/smartForwarding/DisableSmartForwardingTask.java +++ b/src/com/android/settings/sim/smartForwarding/DisableSmartForwardingTask.java @@ -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; + } }