diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 69f382c7984..e4e1a10d293 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -3337,6 +3337,7 @@ diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java index bd28e70255d..8530dbedb32 100644 --- a/src/com/android/settings/network/MobileNetworkSummaryController.java +++ b/src/com/android/settings/network/MobileNetworkSummaryController.java @@ -33,7 +33,6 @@ import androidx.preference.Preference; 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 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController || 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 00000000000..8b3503e35f1 --- /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 43bdd803bf8..1bb50cbaf5e 100644 --- a/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java +++ b/src/com/android/settings/network/NetworkProviderDownloadedSimListController.java @@ -130,6 +130,8 @@ public class NetworkProviderDownloadedSimListController extends 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 8fb6cb65d36..d6eaab8e14a 100644 --- a/src/com/android/settings/network/NetworkProviderSimListController.java +++ b/src/com/android/settings/network/NetworkProviderSimListController.java @@ -128,6 +128,9 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll } 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 36c55e2805e..bfe5938b909 100644 --- a/src/com/android/settings/network/SubscriptionsPreferenceController.java +++ b/src/com/android/settings/network/SubscriptionsPreferenceController.java @@ -396,6 +396,8 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl 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 7dab4c0557a..84b75231b98 100644 --- a/src/com/android/settings/sim/SimSelectNotification.java +++ b/src/com/android/settings/sim/SimSelectNotification.java @@ -52,6 +52,7 @@ import android.util.Log; 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 @@ public class SimSelectNotification extends BroadcastReceiver { 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 de64b911111..873c041bb78 100644 --- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java @@ -156,7 +156,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } /* - * Launch carrier emergency address managemnent activity + * Launch carrier emergency address management activity */ private final OnPreferenceClickListener mUpdateAddressListener = preference -> {