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