[Settings] 1. Add configChange for WFC Activity to cover the changes of rotation and screen size
2. register split rule for MobileNetworkActivity

Bug: 204508876
Test: manual
Change-Id: Iff3dae41293e79b274d2928cb51efea46fb45dd4
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 69f382c..e4e1a10 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -3337,6 +3337,7 @@
         <activity
             android:name="Settings$WifiCallingSettingsActivity"
             android:exported="true"
+            android:configChanges="orientation|keyboard|keyboardHidden|screenSize|smallestScreenSize|screenLayout"
             android:label="@string/wifi_calling_settings_title">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java
index bd28e70..8530dbe 100644
--- a/src/com/android/settings/network/MobileNetworkSummaryController.java
+++ b/src/com/android/settings/network/MobileNetworkSummaryController.java
@@ -33,7 +33,6 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
-import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.network.helper.SubscriptionAnnotation;
@@ -202,12 +201,9 @@
                         || 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.
-                    ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome(
-                            mContext,
-                            intent.getComponent(),
-                            null /* secondaryIntentAction */,
-                            false /* clearTop */);
+                    // MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane.
+                    MobileNetworkTwoPaneUtils.registerTwoPaneForMobileNetwork(mContext, intent,
+                            null);
                     mContext.startActivity(intent);
                     return true;
                 }
diff --git a/src/com/android/settings/network/MobileNetworkTwoPaneUtils.java b/src/com/android/settings/network/MobileNetworkTwoPaneUtils.java
new file mode 100644
index 0000000..8b3503e
--- /dev/null
+++ b/src/com/android/settings/network/MobileNetworkTwoPaneUtils.java
@@ -0,0 +1,29 @@
+package com.android.settings.network;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
+
+public class MobileNetworkTwoPaneUtils {
+
+    private static final String TAG = "MobileNetworkTwoPaneUtils";
+
+    /**
+     * TODO: b/206061070, the problem of multi-instance should be fixed in Android T to apply the
+     * Settings' architecture and 2 panes mode instead of registering the rule.
+     *
+     * The launchMode of MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane.
+     */
+    public static void registerTwoPaneForMobileNetwork(Context context, Intent intent,
+            @Nullable String secondaryIntentAction) {
+        Log.d(TAG, "registerTwoPaneForMobileNetwork");
+        ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome(
+                context,
+                intent.getComponent(),
+                secondaryIntentAction /* secondaryIntentAction */,
+                false /* clearTop */);
+    }
+}
diff --git a/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java b/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java
index 43bdd80..1bb50cb 100644
--- a/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java
+++ b/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java
@@ -130,6 +130,8 @@
             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);
                 return true;
             });
diff --git a/src/com/android/settings/network/NetworkProviderSimListController.java b/src/com/android/settings/network/NetworkProviderSimListController.java
index 8fb6cb6..d6eaab8 100644
--- a/src/com/android/settings/network/NetworkProviderSimListController.java
+++ b/src/com/android/settings/network/NetworkProviderSimListController.java
@@ -128,6 +128,9 @@
                 } 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);
                 }
                 return true;
diff --git a/src/com/android/settings/network/SubscriptionsPreferenceController.java b/src/com/android/settings/network/SubscriptionsPreferenceController.java
index 36c55e2..bfe5938 100644
--- a/src/com/android/settings/network/SubscriptionsPreferenceController.java
+++ b/src/com/android/settings/network/SubscriptionsPreferenceController.java
@@ -396,6 +396,8 @@
     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);
     }
 
diff --git a/src/com/android/settings/sim/SimSelectNotification.java b/src/com/android/settings/sim/SimSelectNotification.java
index 7dab4c0..84b7523 100644
--- a/src/com/android/settings/sim/SimSelectNotification.java
+++ b/src/com/android/settings/sim/SimSelectNotification.java
@@ -52,6 +52,7 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.HelpTrampoline;
 import com.android.settings.R;
+import com.android.settings.network.MobileNetworkTwoPaneUtils;
 import com.android.settings.network.SubscriptionUtil;
 import com.android.settings.network.telephony.MobileNetworkActivity;
 
@@ -263,7 +264,9 @@
         Intent resultIntent = new Intent(Settings.ACTION_MMS_MESSAGE_SETTING);
         resultIntent.setClass(context, MobileNetworkActivity.class);
         resultIntent.putExtra(Settings.EXTRA_SUB_ID, subId);
-        resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        // MobileNetworkActivity is singleTask, set SplitPairRule to show in 2-pane.
+        MobileNetworkTwoPaneUtils.registerTwoPaneForMobileNetwork(context, resultIntent,
+                Settings.ACTION_MMS_MESSAGE_SETTING);
         PendingIntent resultPendingIntent = PendingIntent.getActivity(context, 0, resultIntent,
                 PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
         builder.setContentIntent(resultPendingIntent);
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
index de64b91..873c041 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
@@ -156,7 +156,7 @@
     }
 
     /*
-     * Launch carrier emergency address managemnent activity
+     * Launch carrier emergency address management activity
      */
     private final OnPreferenceClickListener mUpdateAddressListener =
             preference -> {