• 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.NotificationReviewPermissionsActivity
35 import com.android.settings.Settings.OverlaySettingsActivity
36 import com.android.settings.Settings.StorageUseActivity
37 import com.android.settings.Settings.TurnScreenOnSettingsActivity
38 import com.android.settings.Settings.UsageAccessSettingsActivity
39 import com.android.settings.Settings.WriteSettingsActivity
40 import com.android.settings.applications.appinfo.AppLocaleDetails
41 import com.android.settings.applications.manageapplications.ManageApplications.LIST_MANAGE_EXTERNAL_STORAGE
42 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_ALARMS_AND_REMINDERS
43 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_APPS_LOCALE
44 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_USER_ASPECT_RATIO_APPS
45 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_BATTERY_OPTIMIZATION
46 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_CLONED_APPS
47 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_GAMES
48 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_HIGH_POWER
49 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_LONG_BACKGROUND_TASKS
50 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_MAIN
51 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_MANAGE_SOURCES
52 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_MEDIA_MANAGEMENT_APPS
53 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_NFC_TAG_APPS
54 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_NOTIFICATION
55 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_OVERLAY
56 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_STORAGE
57 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_TURN_SCREEN_ON
58 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_USAGE_ACCESS
59 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_WIFI_ACCESS
60 import com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_WRITE_SETTINGS
61 import com.android.settings.spa.app.AllAppListPageProvider
62 import com.android.settings.spa.app.appcompat.UserAspectRatioAppsPageProvider
63 import com.android.settings.spa.app.specialaccess.AlarmsAndRemindersAppListProvider
64 import com.android.settings.spa.app.specialaccess.AllFilesAccessAppListProvider
65 import com.android.settings.spa.app.specialaccess.DisplayOverOtherAppsAppListProvider
66 import com.android.settings.spa.app.specialaccess.InstallUnknownAppsListProvider
67 import com.android.settings.spa.app.specialaccess.MediaManagementAppsAppListProvider
68 import com.android.settings.spa.app.specialaccess.ModifySystemSettingsAppListProvider
69 import com.android.settings.spa.app.specialaccess.NfcTagAppsSettingsProvider
70 import com.android.settings.spa.app.specialaccess.WifiControlAppListProvider
71 import com.android.settings.spa.notification.AppListNotificationsPageProvider
72 import com.android.settings.spa.system.AppLanguagesPageProvider
73 
74 /**
75  * Utils for [ManageApplications].
76  */
77 object ManageApplicationsUtil {
78     private val LIST_TYPE_CLASS_MAP = mapOf(
79         StorageUseActivity::class to LIST_TYPE_STORAGE,
80         UsageAccessSettingsActivity::class to LIST_TYPE_USAGE_ACCESS,
81         HighPowerApplicationsActivity::class to LIST_TYPE_HIGH_POWER,
82         OverlaySettingsActivity::class to LIST_TYPE_OVERLAY,
83         WriteSettingsActivity::class to LIST_TYPE_WRITE_SETTINGS,
84         ManageExternalSourcesActivity::class to LIST_TYPE_MANAGE_SOURCES,
85         GamesStorageActivity::class to LIST_TYPE_GAMES,
86         ChangeWifiStateActivity::class to LIST_TYPE_WIFI_ACCESS,
87         ManageExternalStorageActivity::class to LIST_MANAGE_EXTERNAL_STORAGE,
88         MediaManagementAppsActivity::class to LIST_TYPE_MEDIA_MANAGEMENT_APPS,
89         AlarmsAndRemindersActivity::class to LIST_TYPE_ALARMS_AND_REMINDERS,
90         NotificationAppListActivity::class to LIST_TYPE_NOTIFICATION,
91         NotificationReviewPermissionsActivity::class to LIST_TYPE_NOTIFICATION,
92         AppLocaleDetails::class to LIST_TYPE_APPS_LOCALE,
93         AppBatteryUsageActivity::class to LIST_TYPE_BATTERY_OPTIMIZATION,
94         LongBackgroundTasksActivity::class to LIST_TYPE_LONG_BACKGROUND_TASKS,
95         ClonedAppsListActivity::class to LIST_TYPE_CLONED_APPS,
96         ChangeNfcTagAppsActivity::class to LIST_TYPE_NFC_TAG_APPS,
97         TurnScreenOnSettingsActivity::class to LIST_TYPE_TURN_SCREEN_ON,
98         UserAspectRatioAppListActivity::class to LIST_TYPE_USER_ASPECT_RATIO_APPS,
99     )
100 
101     @JvmField
<lambda>null102     val LIST_TYPE_MAP = LIST_TYPE_CLASS_MAP.mapKeys { it.key.java.name }
103 
104     @JvmStatic
getSpaDestinationnull105     fun getSpaDestination(context: Context, listType: Int): String? {
106         if (!FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_ENABLE_SPA)) {
107             return null
108         }
109         return when (listType) {
110             LIST_TYPE_OVERLAY -> DisplayOverOtherAppsAppListProvider.getAppListRoute()
111             LIST_TYPE_WRITE_SETTINGS -> ModifySystemSettingsAppListProvider.getAppListRoute()
112             LIST_TYPE_MANAGE_SOURCES -> InstallUnknownAppsListProvider.getAppListRoute()
113             LIST_MANAGE_EXTERNAL_STORAGE -> AllFilesAccessAppListProvider.getAppListRoute()
114             LIST_TYPE_MEDIA_MANAGEMENT_APPS -> MediaManagementAppsAppListProvider.getAppListRoute()
115             LIST_TYPE_ALARMS_AND_REMINDERS -> AlarmsAndRemindersAppListProvider.getAppListRoute()
116             LIST_TYPE_WIFI_ACCESS -> WifiControlAppListProvider.getAppListRoute()
117             LIST_TYPE_NOTIFICATION -> AppListNotificationsPageProvider.name
118             LIST_TYPE_APPS_LOCALE -> AppLanguagesPageProvider.name
119             LIST_TYPE_MAIN -> AllAppListPageProvider.name
120             LIST_TYPE_NFC_TAG_APPS -> NfcTagAppsSettingsProvider.getAppListRoute()
121             LIST_TYPE_USER_ASPECT_RATIO_APPS -> UserAspectRatioAppsPageProvider.name
122             else -> null
123         }
124     }
125 }
126