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
This commit is contained in:
Calvin Pan
2021-09-13 16:42:36 +08:00
parent a1fbab88b0
commit e32a2abc16

View File

@@ -19,6 +19,7 @@ package com.android.settings.sim.smartForwarding;
import static com.android.settings.sim.smartForwarding.SmartForwardingUtils.TAG; import static com.android.settings.sim.smartForwarding.SmartForwardingUtils.TAG;
import android.telephony.CallForwardingInfo; import android.telephony.CallForwardingInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.Log; import android.util.Log;
@@ -37,16 +38,29 @@ public class DisableSmartForwardingTask implements Runnable {
@Override @Override
public void run() { public void run() {
for (int i = 0; i < tm.getActiveModemCount(); i++) { 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]); 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 if (callForwardingInfo != null
&& callForwardingInfo[i] != null) { && callForwardingInfo[i] != null
&& subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
Log.d(TAG, "Restore call forwarding to " + callForwardingInfo[i]); 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;
}
} }