[Large Screen] Launch MobileNetworkSettings by SubSettingsLauncher

Test: atest
Bug: 197609014
Bug: 209606859
Change-Id: Icda934a26daeee13f663c986ebcbc92c952f9c2e
diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java
index 94d1ff5..1a85a7f 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.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 @@
                 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 1bb50cb..48cd8aa 100644
--- a/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java
+++ b/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java
@@ -36,7 +36,6 @@
 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 @@
             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 d6eaab8..77d665a 100644
--- a/src/com/android/settings/network/NetworkProviderSimListController.java
+++ b/src/com/android/settings/network/NetworkProviderSimListController.java
@@ -36,7 +36,7 @@
 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 @@
                     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 5541888..87c4697 100644
--- a/src/com/android/settings/network/SubscriptionsPreferenceController.java
+++ b/src/com/android/settings/network/SubscriptionsPreferenceController.java
@@ -55,7 +55,6 @@
 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 @@
             });
 
             mSubsGearPref.setOnGearClickListener(p ->
-                    startMobileNetworkActivity(mContext, subInfo.getSubscriptionId()));
+                    MobileNetworkUtils.launchMobileNetworkSettings(mContext, subInfo));
         }
 
         if (!(mContext.getSystemService(UserManager.class)).isAdminUser()) {
@@ -335,14 +334,6 @@
         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 658f650..e2d158d 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.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.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 @@
         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();
+    }
+
 }