diff --git a/src/com/android/settings/ResetNetworkConfirm.java b/src/com/android/settings/ResetNetworkConfirm.java index beb0528f6a9..c50e2007280 100644 --- a/src/com/android/settings/ResetNetworkConfirm.java +++ b/src/com/android/settings/ResetNetworkConfirm.java @@ -52,6 +52,7 @@ import com.android.internal.telephony.PhoneConstants; import com.android.settings.core.InstrumentedFragment; import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper; import com.android.settings.network.ApnSettings; +import com.android.settings.network.SubscriptionUtil; import com.android.settingslib.RestrictedLockUtilsInternal; /** @@ -126,7 +127,7 @@ public class ResetNetworkConfirm extends InstrumentedFragment { } ImsManager.getInstance(mContext, - SubscriptionManager.getPhoneId(mSubId)).factoryReset(); + SubscriptionUtil.getPhoneId(mContext, mSubId)).factoryReset(); restoreDefaultApn(mContext); if (mEraseEsim) { return RecoverySystem.wipeEuiccData(mContext, mPackageName); diff --git a/src/com/android/settings/network/ApnSettings.java b/src/com/android/settings/network/ApnSettings.java index 137abadfbbd..b34c28d87c2 100755 --- a/src/com/android/settings/network/ApnSettings.java +++ b/src/com/android/settings/network/ApnSettings.java @@ -152,9 +152,9 @@ public class ApnSettings extends RestrictedSettingsFragment if (!mRestoreDefaultApnMode) { int extraSubId = intent.getIntExtra(TelephonyManager.EXTRA_SUBSCRIPTION_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID); - if (SubscriptionManager.isValidSubscriptionId(extraSubId) && - mPhoneId == SubscriptionManager.getPhoneId(extraSubId) && - extraSubId != mSubId) { + if (SubscriptionManager.isValidSubscriptionId(extraSubId) + && mPhoneId == SubscriptionUtil.getPhoneId(context, extraSubId) + && extraSubId != mSubId) { // subscription has changed mSubId = extraSubId; mSubscriptionInfo = getSubscriptionInfo(mSubId); @@ -185,7 +185,7 @@ public class ApnSettings extends RestrictedSettingsFragment final Activity activity = getActivity(); mSubId = activity.getIntent().getIntExtra(SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID); - mPhoneId = SubscriptionManager.getPhoneId(mSubId); + mPhoneId = SubscriptionUtil.getPhoneId(activity, mSubId); mIntentFilter = new IntentFilter( TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED); mIntentFilter.addAction(TelephonyManager.ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED); diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java index 4e8ab89e84a..ca75f2b9fcb 100644 --- a/src/com/android/settings/network/SubscriptionUtil.java +++ b/src/com/android/settings/network/SubscriptionUtil.java @@ -16,6 +16,7 @@ package com.android.settings.network; +import static android.telephony.SubscriptionManager.INVALID_SIM_SLOT_INDEX; import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT; import static com.android.internal.util.CollectionUtils.emptyIfNull; @@ -120,4 +121,20 @@ public class SubscriptionUtil { public static boolean showToggleForPhysicalSim(SubscriptionManager subMgr) { return subMgr.canDisablePhysicalSubscription(); } + + /** + * Get phoneId or logical slot index for a subId if active, or INVALID_PHONE_INDEX if inactive. + */ + public static int getPhoneId(Context context, int subId) { + SubscriptionManager subManager = (SubscriptionManager) + context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); + if (subManager == null) { + return INVALID_SIM_SLOT_INDEX; + } + SubscriptionInfo info = subManager.getActiveSubscriptionInfo(subId); + if (info == null) { + return INVALID_SIM_SLOT_INDEX; + } + return info.getSimSlotIndex(); + } } diff --git a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java index 668f7630066..eabebd17c41 100644 --- a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java +++ b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java @@ -32,6 +32,7 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.ims.ImsManager; +import com.android.settings.network.SubscriptionUtil; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; @@ -75,7 +76,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc mSubId = subId; mCarrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId); if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { - mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId)); + mImsManager = ImsManager.getInstance(mContext, SubscriptionUtil.getPhoneId( + mContext, mSubId)); } final boolean show4GForLTE = mCarrierConfig.getBoolean( diff --git a/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java b/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java index c03f942ee34..9c5069b03d8 100644 --- a/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java +++ b/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java @@ -42,6 +42,7 @@ import androidx.slice.builders.SliceAction; import com.android.ims.ImsManager; import com.android.settings.R; import com.android.settings.Utils; +import com.android.settings.network.SubscriptionUtil; import com.android.settings.slices.CustomSliceRegistry; import com.android.settings.slices.SliceBroadcastReceiver; @@ -188,7 +189,7 @@ public class Enhanced4gLteSliceHelper { } protected ImsManager getImsManager(int subId) { - return ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(subId)); + return ImsManager.getInstance(mContext, SubscriptionUtil.getPhoneId(mContext, subId)); } @VisibleForTesting diff --git a/src/com/android/settings/network/telephony/VideoCallingPreferenceController.java b/src/com/android/settings/network/telephony/VideoCallingPreferenceController.java index 9aa390cb8e5..37cfc074867 100644 --- a/src/com/android/settings/network/telephony/VideoCallingPreferenceController.java +++ b/src/com/android/settings/network/telephony/VideoCallingPreferenceController.java @@ -33,6 +33,7 @@ import androidx.preference.SwitchPreference; import com.android.ims.ImsManager; import com.android.settings.network.MobileDataEnabledListener; +import com.android.settings.network.SubscriptionUtil; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; @@ -119,7 +120,8 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC public VideoCallingPreferenceController init(int subId) { mSubId = subId; if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { - mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId)); + mImsManager = ImsManager.getInstance(mContext, + SubscriptionUtil.getPhoneId(mContext, mSubId)); } return this; @@ -127,7 +129,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC private boolean isVideoCallEnabled(int subId) { final ImsManager imsManager = subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID - ? ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(subId)) + ? ImsManager.getInstance(mContext, SubscriptionUtil.getPhoneId(mContext, subId)) : null; return isVideoCallEnabled(subId, imsManager); } diff --git a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java index 3f770594931..9c9bf2fb18c 100644 --- a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java +++ b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java @@ -36,6 +36,7 @@ import androidx.preference.PreferenceScreen; import com.android.ims.ImsManager; import com.android.settings.R; +import com.android.settings.network.SubscriptionUtil; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; @@ -156,7 +157,8 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont public WifiCallingPreferenceController init(int subId) { mSubId = subId; - mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId)); + mImsManager = ImsManager.getInstance(mContext, + SubscriptionUtil.getPhoneId(mContext, mSubId)); mImsMmTelManager = getImsMmTelManager(mSubId); mSimCallManager = mContext.getSystemService(TelecomManager.class) .getSimCallManagerForSubscription(mSubId); diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java index 025375c93a0..5f26e2dbfbd 100644 --- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java @@ -55,6 +55,7 @@ import com.android.settings.SettingsActivity; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.core.SubSettingLauncher; +import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.widget.SwitchBar; @@ -246,7 +247,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment @VisibleForTesting ImsManager getImsManager() { - return ImsManager.getInstance(getActivity(), SubscriptionManager.getPhoneId(mSubId)); + return ImsManager.getInstance(getActivity(), + SubscriptionUtil.getPhoneId(getActivity(), mSubId)); } @VisibleForTesting diff --git a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java index 967146c6d59..8ca9d5f6984 100644 --- a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java +++ b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java @@ -46,6 +46,7 @@ import com.android.ims.ImsConfig; import com.android.ims.ImsManager; import com.android.settings.R; import com.android.settings.Utils; +import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.slices.SliceBroadcastReceiver; @@ -364,7 +365,7 @@ public class WifiCallingSliceHelper { } protected ImsManager getImsManager(int subId) { - return ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(subId)); + return ImsManager.getInstance(mContext, SubscriptionUtil.getPhoneId(mContext, subId)); } protected ImsMmTelManager getImsMmTelManager(int subId) {