[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 -> {