Improve handling of missing/disabled supervision app component.

When supervision role holders are present, that redirect should take precedence.
If the mitigating install action is available but disabled, launch the loading screen to enable it.

Bug: 418837620
Test: atest SupervisionDashboardLoadingActivityTest
Test: atest SupervisionDashboardActivityTest
Flag: android.app.supervision.flags.enable_supervision_settings_screen
Change-Id: I92d6faaf4774a9d4bfc4954d1203ea4805b88152
diff --git a/src/com/android/settings/supervision/TopLevelSupervisionPreferenceController.kt b/src/com/android/settings/supervision/TopLevelSupervisionPreferenceController.kt
index c17938a..b62f8a1 100644
--- a/src/com/android/settings/supervision/TopLevelSupervisionPreferenceController.kt
+++ b/src/com/android/settings/supervision/TopLevelSupervisionPreferenceController.kt
@@ -20,7 +20,6 @@
 import android.content.Intent
 import androidx.preference.Preference
 import com.android.settings.core.BasePreferenceController
-import com.android.settings.supervision.SupervisionDashboardActivity.Companion.INSTALL_SUPERVISION_APP_ACTION
 
 /** Controller for the top level Supervision settings Preference item. */
 class TopLevelSupervisionPreferenceController(context: Context, key: String) :
@@ -41,20 +40,12 @@
             mContext.hasNecessarySupervisionComponent(matchAll = true)
         if (
             !Flags.enableSupervisionSettingsScreen() ||
-                !hasNecessarySupervisionComponent && !supervisionAppSupportsInstallAction()
+                (!hasNecessarySupervisionComponent &&
+                    mContext.getSupervisionAppInstallActivityInfo() == null)
         ) {
             return UNSUPPORTED_ON_DEVICE
         }
 
         return AVAILABLE
     }
-
-    private fun supervisionAppSupportsInstallAction(): Boolean {
-        val supervisionPackage: String =
-            mContext.resources.getString(com.android.internal.R.string.config_systemSupervision)
-        val intent = Intent(INSTALL_SUPERVISION_APP_ACTION).setPackage(supervisionPackage)
-        return mContext.packageManager
-            .queryIntentActivitiesAsUser(intent, 0, mContext.userId)
-            .isNotEmpty()
-    }
 }