• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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