diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java index 94d1ff5da5e..1a85a7fa341 100644 --- a/src/com/android/settings/network/MobileNetworkSummaryController.java +++ b/src/com/android/settings/network/MobileNetworkSummaryController.java @@ -36,7 +36,7 @@ import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.network.helper.SubscriptionAnnotation; -import com.android.settings.network.telephony.MobileNetworkActivity; +import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.AddPreference; import com.android.settingslib.Utils; @@ -190,12 +190,8 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController SubscriptionAnnotation info = subs.get(0); if (info.getSubInfo().isEmbedded() || info.isActive() || mStatusCache.isPhysicalSimDisableSupport()) { - final Intent intent = new Intent(mContext, MobileNetworkActivity.class); - intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId()); - // MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane. - MobileNetworkTwoPaneUtils.registerTwoPaneForMobileNetwork(mContext, intent, - null); - mContext.startActivity(intent); + MobileNetworkUtils.launchMobileNetworkSettings(mContext, + info.getSubInfo()); return true; } diff --git a/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java b/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java index 1bb50cbaf5e..48cd8aa9c0e 100644 --- a/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java +++ b/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java @@ -36,7 +36,6 @@ import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; -import com.android.settings.network.telephony.MobileNetworkActivity; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -128,11 +127,7 @@ public class NetworkProviderDownloadedSimListController extends pref.setSummary(getSummary(subId)); pref.setOnPreferenceClickListener(clickedPref -> { - final Intent intent = new Intent(mContext, MobileNetworkActivity.class); - intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId()); - // MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane. - MobileNetworkTwoPaneUtils.registerTwoPaneForMobileNetwork(mContext, intent, null); - mContext.startActivity(intent); + MobileNetworkUtils.launchMobileNetworkSettings(mContext, info); return true; }); mPreferences.put(subId, pref); diff --git a/src/com/android/settings/network/NetworkProviderSimListController.java b/src/com/android/settings/network/NetworkProviderSimListController.java index d6eaab8e14a..77d665a14b0 100644 --- a/src/com/android/settings/network/NetworkProviderSimListController.java +++ b/src/com/android/settings/network/NetworkProviderSimListController.java @@ -36,7 +36,7 @@ import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; -import com.android.settings.network.telephony.MobileNetworkActivity; +import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; @@ -126,12 +126,7 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, subId, true); } else { - final Intent intent = new Intent(mContext, MobileNetworkActivity.class); - intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId()); - // MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane. - MobileNetworkTwoPaneUtils.registerTwoPaneForMobileNetwork(mContext, intent, - null); - mContext.startActivity(intent); + MobileNetworkUtils.launchMobileNetworkSettings(mContext, info); } return true; }); diff --git a/src/com/android/settings/network/SubscriptionsPreferenceController.java b/src/com/android/settings/network/SubscriptionsPreferenceController.java index 554188872ff..87c46974fb9 100644 --- a/src/com/android/settings/network/SubscriptionsPreferenceController.java +++ b/src/com/android/settings/network/SubscriptionsPreferenceController.java @@ -55,7 +55,6 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.network.telephony.DataConnectivityListener; -import com.android.settings.network.telephony.MobileNetworkActivity; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.network.telephony.SignalStrengthListener; import com.android.settings.network.telephony.TelephonyDisplayInfoListener; @@ -237,7 +236,7 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl }); mSubsGearPref.setOnGearClickListener(p -> - startMobileNetworkActivity(mContext, subInfo.getSubscriptionId())); + MobileNetworkUtils.launchMobileNetworkSettings(mContext, subInfo)); } if (!(mContext.getSystemService(UserManager.class)).isAdminUser()) { @@ -335,14 +334,6 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl mSubsGearPref.setSummary(""); } - private static void startMobileNetworkActivity(Context context, int subId) { - final Intent intent = new Intent(context, MobileNetworkActivity.class); - intent.putExtra(Settings.EXTRA_SUB_ID, subId); - // MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane. - MobileNetworkTwoPaneUtils.registerTwoPaneForMobileNetwork(context, intent, null); - context.startActivity(intent); - } - @VisibleForTesting boolean shouldInflateSignalStrength(int subId) { return SignalStrengthUtil.shouldInflateSignalStrength(mContext, subId); diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java index 658f65090a1..e2d158dfe5d 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java +++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java @@ -45,6 +45,7 @@ import android.graphics.drawable.LayerDrawable; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; +import android.os.Bundle; import android.os.PersistableBundle; import android.os.SystemClock; import android.os.SystemProperties; @@ -73,9 +74,11 @@ import com.android.internal.util.ArrayUtils; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; +import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; +import com.android.settingslib.core.instrumentation.Instrumentable; import com.android.settingslib.development.DevelopmentSettingsEnabler; import com.android.settingslib.graph.SignalDrawable; import com.android.settingslib.utils.ThreadUtils; @@ -1008,4 +1011,21 @@ public class MobileNetworkUtils { return context.getResources().getString(resId); } + public static void launchMobileNetworkSettings(Context context, SubscriptionInfo info) { + final int subId = info.getSubscriptionId(); + if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + Log.d(TAG, "launchMobileNetworkSettings fail, subId is invalid"); + return; + } + + final Bundle extra = new Bundle(); + extra.putInt(Settings.EXTRA_SUB_ID, subId); + new SubSettingLauncher(context) + .setTitleText(SubscriptionUtil.getUniqueSubscriptionDisplayName(info, context)) + .setDestination(MobileNetworkSettings.class.getCanonicalName()) + .setSourceMetricsCategory(Instrumentable.METRICS_CATEGORY_UNKNOWN) + .setArguments(extra) + .launch(); + } + }