2 * Copyright (C) 2016 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package com.android.settings.core.gateway;
19 import com.android.settings.ApnEditor;
20 import com.android.settings.ApnSettings;
21 import com.android.settings.DateTimeSettings;
22 import com.android.settings.DeviceAdminSettings;
23 import com.android.settings.DisplaySettings;
24 import com.android.settings.IccLockSettings;
25 import com.android.settings.MasterClear;
26 import com.android.settings.PrivacySettings;
27 import com.android.settings.Settings;
28 import com.android.settings.TestingSettings;
29 import com.android.settings.TetherSettings;
30 import com.android.settings.TrustedCredentialsSettings;
31 import com.android.settings.WifiCallingSettings;
32 import com.android.settings.accessibility.AccessibilitySettings;
33 import com.android.settings.accessibility.AccessibilitySettingsForSetupWizard;
34 import com.android.settings.accessibility.CaptionPropertiesFragment;
35 import com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment;
36 import com.android.settings.accounts.AccountSyncSettings;
37 import com.android.settings.accounts.ChooseAccountActivity;
38 import com.android.settings.accounts.ManagedProfileSettings;
39 import com.android.settings.accounts.AccountDashboardFragment;
40 import com.android.settings.applications.AppAndNotificationDashboardFragment;
41 import com.android.settings.applications.DefaultAppSettings;
42 import com.android.settings.applications.ManageDomainUrls;
43 import com.android.settings.applications.ProcessStatsSummary;
44 import com.android.settings.applications.ProcessStatsUi;
45 import com.android.settings.applications.DirectoryAccessDetails;
46 import com.android.settings.applications.UsageAccessDetails;
47 import com.android.settings.applications.VrListenerSettings;
48 import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
49 import com.android.settings.applications.appinfo.DrawOverlayDetails;
50 import com.android.settings.applications.appinfo.ExternalSourcesDetails;
51 import com.android.settings.applications.appinfo.PictureInPictureDetails;
52 import com.android.settings.applications.appinfo.PictureInPictureSettings;
53 import com.android.settings.applications.appinfo.WriteSettingsDetails;
54 import com.android.settings.applications.assist.ManageAssist;
55 import com.android.settings.applications.manageapplications.ManageApplications;
56 import com.android.settings.bluetooth.BluetoothDeviceDetailsFragment;
57 import com.android.settings.bluetooth.BluetoothSettings;
58 import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment;
59 import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
60 import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragmentOld;
61 import com.android.settings.datausage.DataPlanUsageSummary;
62 import com.android.settings.datausage.DataUsageList;
63 import com.android.settings.datausage.DataUsageSummary;
64 import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
65 import com.android.settings.development.DevelopmentSettingsDashboardFragment;
66 import com.android.settings.deviceinfo.DeviceInfoSettings;
67 import com.android.settings.deviceinfo.PrivateVolumeForget;
68 import com.android.settings.deviceinfo.PrivateVolumeSettings;
69 import com.android.settings.deviceinfo.PublicVolumeSettings;
70 import com.android.settings.deviceinfo.StorageDashboardFragment;
71 import com.android.settings.deviceinfo.StorageSettings;
72 import com.android.settings.display.NightDisplaySettings;
73 import com.android.settings.dream.DreamSettings;
74 import com.android.settings.enterprise.EnterprisePrivacySettings;
75 import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
76 import com.android.settings.fuelgauge.BatterySaverSettings;
77 import com.android.settings.fuelgauge.PowerUsageSummary;
78 import com.android.settings.fuelgauge.PowerUsageSummaryLegacy;
79 import com.android.settings.gestures.AssistGestureSettings;
80 import com.android.settings.gestures.DoubleTapPowerSettings;
81 import com.android.settings.gestures.DoubleTapScreenSettings;
82 import com.android.settings.gestures.DoubleTwistGestureSettings;
83 import com.android.settings.gestures.PickupGestureSettings;
84 import com.android.settings.gestures.SwipeToNotificationSettings;
85 import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment;
86 import com.android.settings.inputmethod.KeyboardLayoutPickerFragment;
87 import com.android.settings.inputmethod.PhysicalKeyboardFragment;
88 import com.android.settings.inputmethod.SpellCheckersSettings;
89 import com.android.settings.inputmethod.UserDictionaryList;
90 import com.android.settings.inputmethod.UserDictionarySettings;
91 import com.android.settings.language.LanguageAndInputSettings;
92 import com.android.settings.localepicker.LocaleListEditor;
93 import com.android.settings.location.LocationSettings;
94 import com.android.settings.network.NetworkDashboardFragment;
95 import com.android.settings.nfc.AndroidBeam;
96 import com.android.settings.nfc.PaymentSettings;
97 import com.android.settings.notification.AppNotificationSettings;
98 import com.android.settings.notification.ChannelGroupNotificationSettings;
99 import com.android.settings.notification.ChannelNotificationSettings;
100 import com.android.settings.notification.ConfigureNotificationSettings;
101 import com.android.settings.notification.NotificationAccessSettings;
102 import com.android.settings.notification.NotificationStation;
103 import com.android.settings.notification.SoundSettings;
104 import com.android.settings.notification.ZenAccessSettings;
105 import com.android.settings.notification.ZenModeAutomationSettings;
106 import com.android.settings.notification.ZenModeBehaviorSettings;
107 import com.android.settings.notification.ZenModeEventRuleSettings;
108 import com.android.settings.notification.ZenModeScheduleRuleSettings;
109 import com.android.settings.notification.ZenModeSettings;
110 import com.android.settings.password.ChooseLockPassword;
111 import com.android.settings.password.ChooseLockPattern;
112 import com.android.settings.print.PrintJobSettingsFragment;
113 import com.android.settings.print.PrintSettingsFragment;
114 import com.android.settings.security.CryptKeeperSettings;
115 import com.android.settings.security.LockscreenDashboardFragment;
116 import com.android.settings.security.SecuritySettings;
117 import com.android.settings.sim.SimSettings;
118 import com.android.settings.support.SupportDashboardActivity;
119 import com.android.settings.system.ResetDashboardFragment;
120 import com.android.settings.system.SystemDashboardFragment;
121 import com.android.settings.tts.TextToSpeechSettings;
122 import com.android.settings.users.UserSettings;
123 import com.android.settings.vpn2.VpnSettings;
124 import com.android.settings.wallpaper.WallpaperTypeSettings;
125 import com.android.settings.webview.WebViewAppPicker;
126 import com.android.settings.wfd.WifiDisplaySettings;
127 import com.android.settings.wifi.ConfigureWifiSettings;
128 import com.android.settings.wifi.SavedAccessPointsWifiSettings;
129 import com.android.settings.wifi.WifiAPITest;
130 import com.android.settings.wifi.WifiInfo;
131 import com.android.settings.wifi.WifiSettings;
132 import com.android.settings.wifi.p2p.WifiP2pSettings;
134 public class SettingsGateway {
137 * A list of fragment that can be hosted by SettingsActivity. SettingsActivity will throw a
138 * security exception if the fragment it needs to display is not in this list.
140 public static final String[] ENTRY_FRAGMENTS = {
141 WifiSettings.class.getName(),
142 ConfigureWifiSettings.class.getName(),
143 SavedAccessPointsWifiSettings.class.getName(),
144 BluetoothSettings.class.getName(),
145 SimSettings.class.getName(),
146 TetherSettings.class.getName(),
147 WifiP2pSettings.class.getName(),
148 VpnSettings.class.getName(),
149 DateTimeSettings.class.getName(),
150 LocaleListEditor.class.getName(),
151 AvailableVirtualKeyboardFragment.class.getName(),
152 LanguageAndInputSettings.class.getName(),
153 SpellCheckersSettings.class.getName(),
154 UserDictionaryList.class.getName(),
155 UserDictionarySettings.class.getName(),
156 DisplaySettings.class.getName(),
157 DeviceInfoSettings.class.getName(),
158 ManageApplications.class.getName(),
159 ManageAssist.class.getName(),
160 ProcessStatsUi.class.getName(),
161 NotificationStation.class.getName(),
162 LocationSettings.class.getName(),
163 SecuritySettings.class.getName(),
164 UsageAccessDetails.class.getName(),
165 PrivacySettings.class.getName(),
166 DeviceAdminSettings.class.getName(),
167 AccessibilitySettings.class.getName(),
168 AccessibilitySettingsForSetupWizard.class.getName(),
169 CaptionPropertiesFragment.class.getName(),
170 ToggleDaltonizerPreferenceFragment.class.getName(),
171 TextToSpeechSettings.class.getName(),
172 StorageSettings.class.getName(),
173 PrivateVolumeForget.class.getName(),
174 PrivateVolumeSettings.class.getName(),
175 PublicVolumeSettings.class.getName(),
176 DevelopmentSettingsDashboardFragment.class.getName(),
177 AndroidBeam.class.getName(),
178 WifiDisplaySettings.class.getName(),
179 PowerUsageSummary.class.getName(),
180 PowerUsageSummaryLegacy.class.getName(),
181 AccountSyncSettings.class.getName(),
182 AssistGestureSettings.class.getName(),
183 SwipeToNotificationSettings.class.getName(),
184 DoubleTapPowerSettings.class.getName(),
185 DoubleTapScreenSettings.class.getName(),
186 PickupGestureSettings.class.getName(),
187 DoubleTwistGestureSettings.class.getName(),
188 CryptKeeperSettings.class.getName(),
189 DataPlanUsageSummary.class.getName(),
190 DataUsageSummary.class.getName(),
191 DreamSettings.class.getName(),
192 UserSettings.class.getName(),
193 NotificationAccessSettings.class.getName(),
194 ZenAccessSettings.class.getName(),
195 ZenModeAutomationSettings.class.getName(),
196 PrintSettingsFragment.class.getName(),
197 PrintJobSettingsFragment.class.getName(),
198 TrustedCredentialsSettings.class.getName(),
199 PaymentSettings.class.getName(),
200 KeyboardLayoutPickerFragment.class.getName(),
201 PhysicalKeyboardFragment.class.getName(),
202 ZenModeSettings.class.getName(),
203 SoundSettings.class.getName(),
204 ConfigureNotificationSettings.class.getName(),
205 ChooseLockPassword.ChooseLockPasswordFragment.class.getName(),
206 ChooseLockPattern.ChooseLockPatternFragment.class.getName(),
207 AppInfoDashboardFragment.class.getName(),
208 BatterySaverSettings.class.getName(),
209 AppNotificationSettings.class.getName(),
210 ChannelNotificationSettings.class.getName(),
211 ChannelGroupNotificationSettings.class.getName(),
212 ApnSettings.class.getName(),
213 ApnEditor.class.getName(),
214 WifiCallingSettings.class.getName(),
215 ZenModeBehaviorSettings.class.getName(),
216 ZenModeScheduleRuleSettings.class.getName(),
217 ZenModeEventRuleSettings.class.getName(),
218 ProcessStatsUi.class.getName(),
219 AdvancedPowerUsageDetail.class.getName(),
220 ProcessStatsSummary.class.getName(),
221 DrawOverlayDetails.class.getName(),
222 WriteSettingsDetails.class.getName(),
223 ExternalSourcesDetails.class.getName(),
224 DefaultAppSettings.class.getName(),
225 WallpaperTypeSettings.class.getName(),
226 VrListenerSettings.class.getName(),
227 PictureInPictureSettings.class.getName(),
228 PictureInPictureDetails.class.getName(),
229 ManagedProfileSettings.class.getName(),
230 ChooseAccountActivity.class.getName(),
231 IccLockSettings.class.getName(),
232 TestingSettings.class.getName(),
233 WifiAPITest.class.getName(),
234 WifiInfo.class.getName(),
235 MasterClear.class.getName(),
236 ResetDashboardFragment.class.getName(),
237 NightDisplaySettings.class.getName(),
238 ManageDomainUrls.class.getName(),
239 AutomaticStorageManagerSettings.class.getName(),
240 StorageDashboardFragment.class.getName(),
241 SystemDashboardFragment.class.getName(),
242 NetworkDashboardFragment.class.getName(),
243 ConnectedDeviceDashboardFragment.class.getName(),
244 ConnectedDeviceDashboardFragmentOld.class.getName(),
245 AppAndNotificationDashboardFragment.class.getName(),
246 AccountDashboardFragment.class.getName(),
247 EnterprisePrivacySettings.class.getName(),
248 WebViewAppPicker.class.getName(),
249 LockscreenDashboardFragment.class.getName(),
250 BluetoothDeviceDetailsFragment.class.getName(),
251 DataUsageList.class.getName(),
252 DirectoryAccessDetails.class.getName(),
253 AdvancedConnectedDeviceDashboardFragment.class.getName()
256 public static final String[] SETTINGS_FOR_RESTRICTED = {
258 Settings.NetworkDashboardActivity.class.getName(),
259 Settings.ConnectedDeviceDashboardActivity.class.getName(),
260 Settings.ConnectedDeviceDashboardActivityOld.class.getName(),
261 Settings.AppAndNotificationDashboardActivity.class.getName(),
262 Settings.DisplaySettingsActivity.class.getName(),
263 Settings.SoundSettingsActivity.class.getName(),
264 Settings.StorageDashboardActivity.class.getName(),
265 Settings.PowerUsageSummaryActivity.class.getName(),
266 Settings.PowerUsageSummaryLegacyActivity.class.getName(),
267 Settings.AccountDashboardActivity.class.getName(),
268 Settings.SecurityDashboardActivity.class.getName(),
269 Settings.AccessibilitySettingsActivity.class.getName(),
270 Settings.SystemDashboardActivity.class.getName(),
271 SupportDashboardActivity.class.getName(),
272 // Home page > Network & Internet
273 Settings.WifiSettingsActivity.class.getName(),
274 Settings.DataPlanUsageSummaryActivity.class.getName(),
275 Settings.DataUsageSummaryActivity.class.getName(),
276 Settings.SimSettingsActivity.class.getName(),
277 // Home page > Connected devices
278 Settings.BluetoothSettingsActivity.class.getName(),
279 Settings.WifiDisplaySettingsActivity.class.getName(),
280 Settings.PrintSettingsActivity.class.getName(),
281 // Home page > Apps & Notifications
282 Settings.UserSettingsActivity.class.getName(),
283 Settings.ConfigureNotificationSettingsActivity.class.getName(),
284 Settings.AdvancedAppsActivity.class.getName(),
285 Settings.ManageApplicationsActivity.class.getName(),
286 Settings.PaymentSettingsActivity.class.getName(),
287 // Home page > Security & screen lock
288 Settings.LocationSettingsActivity.class.getName(),
289 // Home page > System
290 Settings.LanguageAndInputSettingsActivity.class.getName(),
291 Settings.DateTimeSettingsActivity.class.getName(),
292 Settings.DeviceInfoSettingsActivity.class.getName(),
293 Settings.EnterprisePrivacySettingsActivity.class.getName(),
294 Settings.MyDeviceInfoActivity.class.getName(),