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