1 /* 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.settings.applications.manageapplications 18 19 import android.content.Context 20 import android.util.FeatureFlagUtils 21 import com.android.settings.Settings.AlarmsAndRemindersActivity 22 import com.android.settings.Settings.AppBatteryUsageActivity 23 import com.android.settings.Settings.UserAspectRatioAppListActivity 24 import com.android.settings.Settings.ChangeNfcTagAppsActivity 25 import com.android.settings.Settings.ChangeWifiStateActivity 26 import com.android.settings.Settings.ClonedAppsListActivity 27 import com.android.settings.Settings.GamesStorageActivity 28 import com.android.settings.Settings.HighPowerApplicationsActivity 29 import com.android.settings.Settings.LongBackgroundTasksActivity 30 import com.android.settings.Settings.ManageExternalSourcesActivity 31 import com.android.settings.Settings.ManageExternalStorageActivity 32 import com.android.settings.Settings.MediaManagementAppsActivity 33 import com.android.settings.Settings.NotificationAppListActivity 34 import com.android.settings.Settings.NotificationExcludeClassificationActivity 35 import com.android.settings.Settings.NotificationExcludeSummarizationActivity 36 import com.android.settings.Settings.NotificationReviewPermissionsActivity 37 import com.android.settings.Settings.OverlaySettingsActivity 38 import com.android.settings.Settings.StorageUseActivity 39 import com.android.settings.Settings.TurnScreenOnSettingsActivity 40 import com.android.settings.Settings.UsageAccessSettingsActivity 41 import com.android.settings.Settings.WriteSettingsActivity 42 import com.android.settings.applications.appinfo.AppLocaleDetails 43 import com.android.settings.applications.manageapplications.ManageApplications.LIST_MANAGE_EXTERNAL_STORAGE 44 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_ALARMS_AND_REMINDERS 45 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_APPS_LOCALE 46 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_USER_ASPECT_RATIO_APPS 47 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_BATTERY_OPTIMIZATION 48 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_CLONED_APPS 49 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_NOTIFICATION_EXCLUDE_CLASSIFICATION 50 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_NOTIFICATION_EXCLUDE_SUMMARIZATION 51 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_GAMES 52 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_HIGH_POWER 53 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_LONG_BACKGROUND_TASKS 54 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_MAIN 55 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_MANAGE_SOURCES 56 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_MEDIA_MANAGEMENT_APPS 57 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_NFC_TAG_APPS 58 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_NOTIFICATION 59 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_OVERLAY 60 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_STORAGE 61 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_TURN_SCREEN_ON 62 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_USAGE_ACCESS 63 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_WIFI_ACCESS 64 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_WRITE_SETTINGS 65 import com.android.settings.spa.app.AllAppListPageProvider 66 import com.android.settings.spa.app.battery.BatteryOptimizationModeAppListPageProvider 67 import com.android.settings.spa.app.appcompat.UserAspectRatioAppsPageProvider 68 import com.android.settings.spa.app.specialaccess.AlarmsAndRemindersAppListProvider 69 import com.android.settings.spa.app.specialaccess.AllFilesAccessAppListProvider 70 import com.android.settings.spa.app.specialaccess.DisplayOverOtherAppsAppListProvider 71 import com.android.settings.spa.app.specialaccess.InstallUnknownAppsListProvider 72 import com.android.settings.spa.app.specialaccess.LongBackgroundTasksAppListProvider 73 import com.android.settings.spa.app.specialaccess.MediaManagementAppsAppListProvider 74 import com.android.settings.spa.app.specialaccess.ModifySystemSettingsAppListProvider 75 import com.android.settings.spa.app.specialaccess.NfcTagAppsSettingsProvider 76 import com.android.settings.spa.app.specialaccess.TurnScreenOnAppsAppListProvider 77 import com.android.settings.spa.app.specialaccess.WifiControlAppListProvider 78 import com.android.settings.spa.notification.AppListNotificationsPageProvider 79 import com.android.settings.spa.system.AppLanguagesPageProvider 80 81 /** 82 * Utils for [ManageApplications]. 83 */ 84 object ManageApplicationsUtil { 85 private val LIST_TYPE_CLASS_MAP = mapOf( 86 StorageUseActivity::class to LIST_TYPE_STORAGE, 87 UsageAccessSettingsActivity::class to LIST_TYPE_USAGE_ACCESS, 88 HighPowerApplicationsActivity::class to LIST_TYPE_HIGH_POWER, 89 OverlaySettingsActivity::class to LIST_TYPE_OVERLAY, 90 WriteSettingsActivity::class to LIST_TYPE_WRITE_SETTINGS, 91 ManageExternalSourcesActivity::class to LIST_TYPE_MANAGE_SOURCES, 92 GamesStorageActivity::class to LIST_TYPE_GAMES, 93 ChangeWifiStateActivity::class to LIST_TYPE_WIFI_ACCESS, 94 ManageExternalStorageActivity::class to LIST_MANAGE_EXTERNAL_STORAGE, 95 MediaManagementAppsActivity::class to LIST_TYPE_MEDIA_MANAGEMENT_APPS, 96 AlarmsAndRemindersActivity::class to LIST_TYPE_ALARMS_AND_REMINDERS, 97 NotificationAppListActivity::class to LIST_TYPE_NOTIFICATION, 98 NotificationReviewPermissionsActivity::class to LIST_TYPE_NOTIFICATION, 99 AppLocaleDetails::class to LIST_TYPE_APPS_LOCALE, 100 AppBatteryUsageActivity::class to LIST_TYPE_BATTERY_OPTIMIZATION, 101 LongBackgroundTasksActivity::class to LIST_TYPE_LONG_BACKGROUND_TASKS, 102 ClonedAppsListActivity::class to LIST_TYPE_CLONED_APPS, 103 ChangeNfcTagAppsActivity::class to LIST_TYPE_NFC_TAG_APPS, 104 TurnScreenOnSettingsActivity::class to LIST_TYPE_TURN_SCREEN_ON, 105 UserAspectRatioAppListActivity::class to LIST_TYPE_USER_ASPECT_RATIO_APPS, 106 NotificationExcludeSummarizationActivity::class to LIST_TYPE_NOTIFICATION_EXCLUDE_SUMMARIZATION, 107 NotificationExcludeClassificationActivity::class to LIST_TYPE_NOTIFICATION_EXCLUDE_CLASSIFICATION, 108 109 ) 110 111 @JvmField <lambda>null112 val LIST_TYPE_MAP = LIST_TYPE_CLASS_MAP.mapKeys { it.key.java.name } 113 114 @JvmStatic getSpaDestinationnull115 fun getSpaDestination(context: Context, listType: Int): String? { 116 if (!FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_ENABLE_SPA)) { 117 return null 118 } 119 return when (listType) { 120 LIST_TYPE_OVERLAY -> DisplayOverOtherAppsAppListProvider.getAppListRoute() 121 LIST_TYPE_WRITE_SETTINGS -> ModifySystemSettingsAppListProvider.getAppListRoute() 122 LIST_TYPE_MANAGE_SOURCES -> InstallUnknownAppsListProvider.getAppListRoute() 123 LIST_MANAGE_EXTERNAL_STORAGE -> AllFilesAccessAppListProvider.getAppListRoute() 124 LIST_TYPE_MEDIA_MANAGEMENT_APPS -> MediaManagementAppsAppListProvider.getAppListRoute() 125 LIST_TYPE_ALARMS_AND_REMINDERS -> AlarmsAndRemindersAppListProvider.getAppListRoute() 126 LIST_TYPE_WIFI_ACCESS -> WifiControlAppListProvider.getAppListRoute() 127 LIST_TYPE_NOTIFICATION -> AppListNotificationsPageProvider.AllApps.name 128 LIST_TYPE_APPS_LOCALE -> AppLanguagesPageProvider.name 129 LIST_TYPE_MAIN -> AllAppListPageProvider.name 130 LIST_TYPE_NFC_TAG_APPS -> NfcTagAppsSettingsProvider.getAppListRoute() 131 LIST_TYPE_USER_ASPECT_RATIO_APPS -> UserAspectRatioAppsPageProvider.name 132 LIST_TYPE_LONG_BACKGROUND_TASKS -> LongBackgroundTasksAppListProvider.getAppListRoute() 133 LIST_TYPE_TURN_SCREEN_ON -> TurnScreenOnAppsAppListProvider.getAppListRoute() 134 // TODO(b/292165031) enable once sorting is supported 135 //LIST_TYPE_STORAGE -> StorageAppListPageProvider.Apps.name 136 //LIST_TYPE_GAMES -> StorageAppListPageProvider.Games.name 137 LIST_TYPE_BATTERY_OPTIMIZATION -> BatteryOptimizationModeAppListPageProvider.name 138 LIST_TYPE_NOTIFICATION_EXCLUDE_SUMMARIZATION -> AppListNotificationsPageProvider.ExcludeSummarization.name 139 LIST_TYPE_NOTIFICATION_EXCLUDE_CLASSIFICATION -> AppListNotificationsPageProvider.ExcludeClassification.name 140 else -> null 141 } 142 } 143 } 144