Better multi-pane handling for the top-level Parental controls setting screen.
Register a two-pane-pair-rule for the dashboard activity so that the navigation is handled correctly.
Bug: 426667343
Test: atest TopLevelSupervisionPreferenceControllerTest
Test: manual
Flag: android.app.supervision.flags.enable_supervision_settings_screen
Change-Id: I3528bfd612bf9de3de2983be93206d75cbcb5868
diff --git a/src/com/android/settings/supervision/TopLevelSupervisionPreferenceController.kt b/src/com/android/settings/supervision/TopLevelSupervisionPreferenceController.kt
index b62f8a1..9aaf529 100644
--- a/src/com/android/settings/supervision/TopLevelSupervisionPreferenceController.kt
+++ b/src/com/android/settings/supervision/TopLevelSupervisionPreferenceController.kt
@@ -16,17 +16,33 @@
package com.android.settings.supervision
import android.app.supervision.flags.Flags
+import android.content.ComponentName
import android.content.Context
import android.content.Intent
import androidx.preference.Preference
+import androidx.preference.PreferenceScreen
+import com.android.settings.SettingsActivity.EXTRA_IS_SECOND_LAYER_PAGE
+import com.android.settings.activityembedding.ActivityEmbeddingRulesController
import com.android.settings.core.BasePreferenceController
/** Controller for the top level Supervision settings Preference item. */
class TopLevelSupervisionPreferenceController(context: Context, key: String) :
BasePreferenceController(context, key) {
+
+ override fun displayPreference(screen: PreferenceScreen) {
+ super.displayPreference(screen)
+ ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome(
+ mContext,
+ ComponentName(mContext, SupervisionDashboardActivity::class.java),
+ /* secondaryIntentAction= */ null,
+ /* clearTop= */ true,
+ )
+ }
+
override fun handlePreferenceTreeClick(preference: Preference): Boolean {
if (preference.key == preferenceKey) {
val intent = Intent(mContext, SupervisionDashboardActivity::class.java)
+ intent.putExtra(EXTRA_IS_SECOND_LAYER_PAGE, true)
mContext.startActivity(intent)
return true
}