1 /* 2 * Copyright (C) 2016 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.core.gateway; 18 19 import com.android.settings.AllInOneTetherSettings; 20 import com.android.settings.DisplaySettings; 21 import com.android.settings.IccLockSettings; 22 import com.android.settings.MainClear; 23 import com.android.settings.MainClearConfirm; 24 import com.android.settings.Settings; 25 import com.android.settings.TestingSettings; 26 import com.android.settings.TrustedCredentialsSettings; 27 import com.android.settings.accessibility.AccessibilityDetailsSettingsFragment; 28 import com.android.settings.accessibility.AccessibilitySettings; 29 import com.android.settings.accessibility.AccessibilitySettingsForSetupWizard; 30 import com.android.settings.accessibility.CaptioningPropertiesFragment; 31 import com.android.settings.accessibility.ColorAndMotionFragment; 32 import com.android.settings.accessibility.TextReadingPreferenceFragment; 33 import com.android.settings.accessibility.TextReadingPreferenceFragmentForSetupWizard; 34 import com.android.settings.accessibility.ToggleColorInversionPreferenceFragment; 35 import com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment; 36 import com.android.settings.accessibility.ToggleReduceBrightColorsPreferenceFragment; 37 import com.android.settings.accounts.AccountDashboardFragment; 38 import com.android.settings.accounts.AccountSyncSettings; 39 import com.android.settings.accounts.ChooseAccountFragment; 40 import com.android.settings.accounts.ManagedProfileSettings; 41 import com.android.settings.applications.AppDashboardFragment; 42 import com.android.settings.applications.ProcessStatsSummary; 43 import com.android.settings.applications.ProcessStatsUi; 44 import com.android.settings.applications.UsageAccessDetails; 45 import com.android.settings.applications.appcompat.UserAspectRatioDetails; 46 import com.android.settings.applications.appinfo.AlarmsAndRemindersDetails; 47 import com.android.settings.applications.appinfo.AppInfoDashboardFragment; 48 import com.android.settings.applications.appinfo.AppLocaleDetails; 49 import com.android.settings.applications.appinfo.DrawOverlayDetails; 50 import com.android.settings.applications.appinfo.ExternalSourcesDetails; 51 import com.android.settings.applications.appinfo.LongBackgroundTasksDetails; 52 import com.android.settings.applications.appinfo.ManageExternalStorageDetails; 53 import com.android.settings.applications.appinfo.MediaManagementAppsDetails; 54 import com.android.settings.applications.appinfo.TurnScreenOnDetails; 55 import com.android.settings.applications.appinfo.WriteSettingsDetails; 56 import com.android.settings.applications.appops.BackgroundCheckSummary; 57 import com.android.settings.applications.assist.ManageAssist; 58 import com.android.settings.applications.manageapplications.ManageApplications; 59 import com.android.settings.applications.managedomainurls.ManageDomainUrls; 60 import com.android.settings.applications.specialaccess.deviceadmin.DeviceAdminSettings; 61 import com.android.settings.applications.specialaccess.interactacrossprofiles.InteractAcrossProfilesDetails; 62 import com.android.settings.applications.specialaccess.interactacrossprofiles.InteractAcrossProfilesSettings; 63 import com.android.settings.applications.specialaccess.notificationaccess.NotificationAccessDetails; 64 import com.android.settings.applications.specialaccess.pictureinpicture.PictureInPictureDetails; 65 import com.android.settings.applications.specialaccess.pictureinpicture.PictureInPictureSettings; 66 import com.android.settings.applications.specialaccess.premiumsms.PremiumSmsAccess; 67 import com.android.settings.applications.specialaccess.vrlistener.VrListenerSettings; 68 import com.android.settings.applications.specialaccess.zenaccess.ZenAccessDetails; 69 import com.android.settings.backup.PrivacySettings; 70 import com.android.settings.backup.ToggleBackupSettingFragment; 71 import com.android.settings.backup.UserBackupSettingsActivity; 72 import com.android.settings.biometrics.combination.CombinedBiometricProfileSettings; 73 import com.android.settings.biometrics.combination.CombinedBiometricSettings; 74 import com.android.settings.biometrics.face.FaceSettings; 75 import com.android.settings.biometrics.fingerprint.FingerprintSettings; 76 import com.android.settings.biometrics.fingerprint2.ui.fragment.FingerprintSettingsV2Fragment; 77 import com.android.settings.bluetooth.BluetoothBroadcastDialog; 78 import com.android.settings.bluetooth.BluetoothDeviceDetailsFragment; 79 import com.android.settings.bluetooth.BluetoothFindBroadcastsFragment; 80 import com.android.settings.bluetooth.BluetoothPairingDetail; 81 import com.android.settings.bugreporthandler.BugReportHandlerPicker; 82 import com.android.settings.communal.CommunalDashboardFragment; 83 import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment; 84 import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment; 85 import com.android.settings.connecteddevice.NfcAndPaymentFragment; 86 import com.android.settings.connecteddevice.PreviouslyConnectedDeviceDashboardFragment; 87 import com.android.settings.connecteddevice.stylus.StylusUsiDetailsFragment; 88 import com.android.settings.connecteddevice.usb.UsbDetailsFragment; 89 import com.android.settings.datausage.DataSaverSummary; 90 import com.android.settings.datausage.DataUsageList; 91 import com.android.settings.datausage.DataUsageSummary; 92 import com.android.settings.datetime.DateTimeSettings; 93 import com.android.settings.deletionhelper.AutomaticStorageManagerSettings; 94 import com.android.settings.development.DevelopmentSettingsDashboardFragment; 95 import com.android.settings.deviceinfo.PrivateVolumeForget; 96 import com.android.settings.deviceinfo.PublicVolumeSettings; 97 import com.android.settings.deviceinfo.StorageDashboardFragment; 98 import com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment; 99 import com.android.settings.deviceinfo.batteryinfo.BatteryInfoFragment; 100 import com.android.settings.deviceinfo.firmwareversion.FirmwareVersionSettings; 101 import com.android.settings.deviceinfo.legal.ModuleLicensesDashboard; 102 import com.android.settings.display.AutoBrightnessSettings; 103 import com.android.settings.display.NightDisplaySettings; 104 import com.android.settings.display.SmartAutoRotatePreferenceFragment; 105 import com.android.settings.display.darkmode.DarkModeSettingsFragment; 106 import com.android.settings.dream.DreamSettings; 107 import com.android.settings.enterprise.EnterprisePrivacySettings; 108 import com.android.settings.fuelgauge.AdvancedPowerUsageDetail; 109 import com.android.settings.fuelgauge.batterysaver.BatterySaverScheduleSettings; 110 import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings; 111 import com.android.settings.fuelgauge.batteryusage.PowerUsageSummary; 112 import com.android.settings.gestures.AssistGestureSettings; 113 import com.android.settings.gestures.ButtonNavigationSettingsFragment; 114 import com.android.settings.gestures.DoubleTapPowerSettings; 115 import com.android.settings.gestures.DoubleTapScreenSettings; 116 import com.android.settings.gestures.DoubleTwistGestureSettings; 117 import com.android.settings.gestures.GestureNavigationSettingsFragment; 118 import com.android.settings.gestures.OneHandedSettings; 119 import com.android.settings.gestures.PickupGestureSettings; 120 import com.android.settings.gestures.PowerMenuSettings; 121 import com.android.settings.gestures.SwipeToNotificationSettings; 122 import com.android.settings.gestures.SystemNavigationGestureSettings; 123 import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment; 124 import com.android.settings.inputmethod.KeyboardLayoutPickerFragment; 125 import com.android.settings.inputmethod.KeyboardSettings; 126 import com.android.settings.inputmethod.ModifierKeysSettings; 127 import com.android.settings.inputmethod.NewKeyboardLayoutEnabledLocalesFragment; 128 import com.android.settings.inputmethod.PhysicalKeyboardFragment; 129 import com.android.settings.inputmethod.SpellCheckersSettings; 130 import com.android.settings.inputmethod.TrackpadSettings; 131 import com.android.settings.inputmethod.UserDictionaryList; 132 import com.android.settings.inputmethod.UserDictionarySettings; 133 import com.android.settings.language.LanguageAndInputSettings; 134 import com.android.settings.language.LanguageSettings; 135 import com.android.settings.localepicker.LocaleListEditor; 136 import com.android.settings.location.LocationServices; 137 import com.android.settings.location.LocationSettings; 138 import com.android.settings.location.WifiScanningFragment; 139 import com.android.settings.network.MobileNetworkListFragment; 140 import com.android.settings.network.NetworkDashboardFragment; 141 import com.android.settings.network.NetworkProviderSettings; 142 import com.android.settings.network.apn.ApnEditor; 143 import com.android.settings.network.apn.ApnSettings; 144 import com.android.settings.network.telephony.MobileNetworkSettings; 145 import com.android.settings.network.telephony.NetworkSelectSettings; 146 import com.android.settings.network.tether.TetherSettings; 147 import com.android.settings.nfc.AndroidBeam; 148 import com.android.settings.nfc.PaymentSettings; 149 import com.android.settings.notification.ConfigureNotificationSettings; 150 import com.android.settings.notification.NotificationAccessSettings; 151 import com.android.settings.notification.NotificationAssistantPicker; 152 import com.android.settings.notification.SoundSettings; 153 import com.android.settings.notification.app.AppBubbleNotificationSettings; 154 import com.android.settings.notification.app.AppNotificationSettings; 155 import com.android.settings.notification.app.ChannelNotificationSettings; 156 import com.android.settings.notification.app.ConversationListSettings; 157 import com.android.settings.notification.history.NotificationStation; 158 import com.android.settings.notification.zen.ZenAccessSettings; 159 import com.android.settings.notification.zen.ZenModeAutomationSettings; 160 import com.android.settings.notification.zen.ZenModeBlockedEffectsSettings; 161 import com.android.settings.notification.zen.ZenModeEventRuleSettings; 162 import com.android.settings.notification.zen.ZenModeScheduleRuleSettings; 163 import com.android.settings.notification.zen.ZenModeSettings; 164 import com.android.settings.password.ChooseLockPassword; 165 import com.android.settings.password.ChooseLockPattern; 166 import com.android.settings.print.PrintJobSettingsFragment; 167 import com.android.settings.print.PrintSettingsFragment; 168 import com.android.settings.privacy.PrivacyControlsFragment; 169 import com.android.settings.privacy.PrivacyDashboardFragment; 170 import com.android.settings.regionalpreferences.RegionalPreferencesEntriesFragment; 171 import com.android.settings.safetycenter.MoreSecurityPrivacyFragment; 172 import com.android.settings.security.LockscreenDashboardFragment; 173 import com.android.settings.security.MemtagPage; 174 import com.android.settings.security.SecurityAdvancedSettings; 175 import com.android.settings.security.SecuritySettings; 176 import com.android.settings.shortcut.CreateShortcut; 177 import com.android.settings.sound.MediaControlsSettings; 178 import com.android.settings.support.SupportDashboardActivity; 179 import com.android.settings.system.ResetDashboardFragment; 180 import com.android.settings.system.SystemDashboardFragment; 181 import com.android.settings.tts.TextToSpeechSettings; 182 import com.android.settings.users.UserSettings; 183 import com.android.settings.vpn2.VpnSettings; 184 import com.android.settings.wallpaper.WallpaperTypeSettings; 185 import com.android.settings.webview.WebViewAppPicker; 186 import com.android.settings.wfd.WifiDisplaySettings; 187 import com.android.settings.wifi.ConfigureWifiSettings; 188 import com.android.settings.wifi.WifiAPITest; 189 import com.android.settings.wifi.WifiInfo; 190 import com.android.settings.wifi.WifiSettings; 191 import com.android.settings.wifi.calling.WifiCallingDisclaimerFragment; 192 import com.android.settings.wifi.calling.WifiCallingSettings; 193 import com.android.settings.wifi.details.WifiNetworkDetailsFragment; 194 import com.android.settings.wifi.p2p.WifiP2pSettings; 195 import com.android.settings.wifi.savedaccesspoints2.SavedAccessPointsWifiSettings2; 196 import com.android.settings.wifi.tether.WifiTetherSettings; 197 198 public class SettingsGateway { 199 200 /** 201 * A list of fragment that can be hosted by SettingsActivity. SettingsActivity will throw a 202 * security exception if the fragment it needs to display is not in this list. 203 */ 204 public static final String[] ENTRY_FRAGMENTS = { 205 AdvancedConnectedDeviceDashboardFragment.class.getName(), 206 CreateShortcut.class.getName(), 207 BluetoothPairingDetail.class.getName(), 208 WifiSettings.class.getName(), 209 WifiNetworkDetailsFragment.class.getName(), 210 ConfigureWifiSettings.class.getName(), 211 SavedAccessPointsWifiSettings2.class.getName(), 212 AllInOneTetherSettings.class.getName(), 213 TetherSettings.class.getName(), 214 SmartAutoRotatePreferenceFragment.class.getName(), 215 WifiP2pSettings.class.getName(), 216 WifiTetherSettings.class.getName(), 217 BackgroundCheckSummary.class.getName(), 218 VpnSettings.class.getName(), 219 DataSaverSummary.class.getName(), 220 DateTimeSettings.class.getName(), 221 LocaleListEditor.class.getName(), 222 AvailableVirtualKeyboardFragment.class.getName(), 223 LanguageAndInputSettings.class.getName(), 224 LanguageSettings.class.getName(), 225 KeyboardSettings.class.getName(), 226 ModifierKeysSettings.class.getName(), 227 NewKeyboardLayoutEnabledLocalesFragment.class.getName(), 228 TrackpadSettings.class.getName(), 229 SpellCheckersSettings.class.getName(), 230 UserDictionaryList.class.getName(), 231 UserDictionarySettings.class.getName(), 232 DisplaySettings.class.getName(), 233 MyDeviceInfoFragment.class.getName(), 234 ModuleLicensesDashboard.class.getName(), 235 ManageApplications.class.getName(), 236 FirmwareVersionSettings.class.getName(), 237 ManageAssist.class.getName(), 238 ProcessStatsUi.class.getName(), 239 NotificationStation.class.getName(), 240 LocationSettings.class.getName(), 241 WifiScanningFragment.class.getName(), 242 PrivacyDashboardFragment.class.getName(), 243 PrivacyControlsFragment.class.getName(), 244 LocationServices.class.getName(), 245 SecuritySettings.class.getName(), 246 SecurityAdvancedSettings.class.getName(), 247 MoreSecurityPrivacyFragment.class.getName(), 248 UsageAccessDetails.class.getName(), 249 PrivacySettings.class.getName(), 250 DeviceAdminSettings.class.getName(), 251 AccessibilityDetailsSettingsFragment.class.getName(), 252 AccessibilitySettings.class.getName(), 253 AccessibilitySettingsForSetupWizard.class.getName(), 254 TextReadingPreferenceFragment.class.getName(), 255 TextReadingPreferenceFragmentForSetupWizard.class.getName(), 256 CaptioningPropertiesFragment.class.getName(), 257 ToggleDaltonizerPreferenceFragment.class.getName(), 258 ToggleColorInversionPreferenceFragment.class.getName(), 259 ToggleReduceBrightColorsPreferenceFragment.class.getName(), 260 TextToSpeechSettings.class.getName(), 261 PrivateVolumeForget.class.getName(), 262 PublicVolumeSettings.class.getName(), 263 DevelopmentSettingsDashboardFragment.class.getName(), 264 AndroidBeam.class.getName(), 265 WifiDisplaySettings.class.getName(), 266 PowerUsageSummary.class.getName(), 267 AccountSyncSettings.class.getName(), 268 AssistGestureSettings.class.getName(), 269 FaceSettings.class.getName(), 270 FingerprintSettings.FingerprintSettingsFragment.class.getName(), 271 FingerprintSettingsV2Fragment.class.getName(), 272 CombinedBiometricSettings.class.getName(), 273 CombinedBiometricProfileSettings.class.getName(), 274 SwipeToNotificationSettings.class.getName(), 275 DoubleTapPowerSettings.class.getName(), 276 DoubleTapScreenSettings.class.getName(), 277 PickupGestureSettings.class.getName(), 278 DoubleTwistGestureSettings.class.getName(), 279 SystemNavigationGestureSettings.class.getName(), 280 DataUsageSummary.class.getName(), 281 DreamSettings.class.getName(), 282 CommunalDashboardFragment.class.getName(), 283 UserSettings.class.getName(), 284 NotificationAccessSettings.class.getName(), 285 NotificationAccessDetails.class.getName(), 286 AppBubbleNotificationSettings.class.getName(), 287 ZenAccessSettings.class.getName(), 288 ZenAccessDetails.class.getName(), 289 ZenModeAutomationSettings.class.getName(), 290 PrintSettingsFragment.class.getName(), 291 PrintJobSettingsFragment.class.getName(), 292 TrustedCredentialsSettings.class.getName(), 293 PaymentSettings.class.getName(), 294 KeyboardLayoutPickerFragment.class.getName(), 295 PhysicalKeyboardFragment.class.getName(), 296 ZenModeSettings.class.getName(), 297 SoundSettings.class.getName(), 298 ConversationListSettings.class.getName(), 299 ConfigureNotificationSettings.class.getName(), 300 ChooseLockPassword.ChooseLockPasswordFragment.class.getName(), 301 ChooseLockPattern.ChooseLockPatternFragment.class.getName(), 302 AppInfoDashboardFragment.class.getName(), 303 BatterySaverSettings.class.getName(), 304 AppNotificationSettings.class.getName(), 305 NotificationAssistantPicker.class.getName(), 306 ChannelNotificationSettings.class.getName(), 307 ApnSettings.class.getName(), 308 ApnEditor.class.getName(), 309 WifiCallingSettings.class.getName(), 310 ZenModeScheduleRuleSettings.class.getName(), 311 ZenModeEventRuleSettings.class.getName(), 312 ZenModeBlockedEffectsSettings.class.getName(), 313 ProcessStatsUi.class.getName(), 314 AdvancedPowerUsageDetail.class.getName(), 315 ProcessStatsSummary.class.getName(), 316 DrawOverlayDetails.class.getName(), 317 WriteSettingsDetails.class.getName(), 318 ExternalSourcesDetails.class.getName(), 319 ManageExternalStorageDetails.class.getName(), 320 WallpaperTypeSettings.class.getName(), 321 VrListenerSettings.class.getName(), 322 PictureInPictureSettings.class.getName(), 323 PictureInPictureDetails.class.getName(), 324 PremiumSmsAccess.class.getName(), 325 ManagedProfileSettings.class.getName(), 326 ChooseAccountFragment.class.getName(), 327 IccLockSettings.class.getName(), 328 TestingSettings.class.getName(), 329 WifiAPITest.class.getName(), 330 WifiInfo.class.getName(), 331 MainClear.class.getName(), 332 MainClearConfirm.class.getName(), 333 ResetDashboardFragment.class.getName(), 334 NightDisplaySettings.class.getName(), 335 ManageDomainUrls.class.getName(), 336 AutomaticStorageManagerSettings.class.getName(), 337 StorageDashboardFragment.class.getName(), 338 SystemDashboardFragment.class.getName(), 339 NetworkDashboardFragment.class.getName(), 340 ConnectedDeviceDashboardFragment.class.getName(), 341 UsbDetailsFragment.class.getName(), 342 AppDashboardFragment.class.getName(), 343 WifiCallingDisclaimerFragment.class.getName(), 344 AccountDashboardFragment.class.getName(), 345 EnterprisePrivacySettings.class.getName(), 346 WebViewAppPicker.class.getName(), 347 LockscreenDashboardFragment.class.getName(), 348 MemtagPage.class.getName(), 349 BluetoothDeviceDetailsFragment.class.getName(), 350 BluetoothBroadcastDialog.class.getName(), 351 BluetoothFindBroadcastsFragment.class.getName(), 352 StylusUsiDetailsFragment.class.getName(), 353 DataUsageList.class.getName(), 354 ToggleBackupSettingFragment.class.getName(), 355 PreviouslyConnectedDeviceDashboardFragment.class.getName(), 356 BatterySaverScheduleSettings.class.getName(), 357 MobileNetworkListFragment.class.getName(), 358 PowerMenuSettings.class.getName(), 359 DarkModeSettingsFragment.class.getName(), 360 BugReportHandlerPicker.class.getName(), 361 GestureNavigationSettingsFragment.class.getName(), 362 ButtonNavigationSettingsFragment.class.getName(), 363 InteractAcrossProfilesSettings.class.getName(), 364 InteractAcrossProfilesDetails.class.getName(), 365 MediaControlsSettings.class.getName(), 366 NetworkProviderSettings.class.getName(), 367 NetworkSelectSettings.class.getName(), 368 AlarmsAndRemindersDetails.class.getName(), 369 MediaManagementAppsDetails.class.getName(), 370 AutoBrightnessSettings.class.getName(), 371 OneHandedSettings.class.getName(), 372 MobileNetworkSettings.class.getName(), 373 AppLocaleDetails.class.getName(), 374 TurnScreenOnDetails.class.getName(), 375 NfcAndPaymentFragment.class.getName(), 376 ColorAndMotionFragment.class.getName(), 377 LongBackgroundTasksDetails.class.getName(), 378 RegionalPreferencesEntriesFragment.class.getName(), 379 BatteryInfoFragment.class.getName(), 380 UserAspectRatioDetails.class.getName() 381 }; 382 383 public static final String[] SETTINGS_FOR_RESTRICTED = { 384 // Home page 385 Settings.NetworkDashboardActivity.class.getName(), 386 Settings.ConnectedDeviceDashboardActivity.class.getName(), 387 Settings.AppDashboardActivity.class.getName(), 388 Settings.DisplaySettingsActivity.class.getName(), 389 Settings.SoundSettingsActivity.class.getName(), 390 Settings.StorageDashboardActivity.class.getName(), 391 Settings.PowerUsageSummaryActivity.class.getName(), 392 Settings.AccountDashboardActivity.class.getName(), 393 Settings.PrivacySettingsActivity.class.getName(), 394 Settings.SecurityDashboardActivity.class.getName(), 395 Settings.AccessibilitySettingsActivity.class.getName(), 396 Settings.SystemDashboardActivity.class.getName(), 397 SupportDashboardActivity.class.getName(), 398 // Home page > Network & Internet 399 Settings.WifiSettingsActivity.class.getName(), 400 Settings.DataUsageSummaryActivity.class.getName(), 401 Settings.NetworkProviderSettingsActivity.class.getName(), 402 Settings.NetworkSelectActivity.class.getName(), 403 // Home page > Connected devices 404 Settings.BluetoothSettingsActivity.class.getName(), 405 Settings.WifiDisplaySettingsActivity.class.getName(), 406 Settings.PrintSettingsActivity.class.getName(), 407 // Home page > Apps & Notifications 408 Settings.UserSettingsActivity.class.getName(), 409 Settings.ConfigureNotificationSettingsActivity.class.getName(), 410 Settings.ManageApplicationsActivity.class.getName(), 411 Settings.PaymentSettingsActivity.class.getName(), 412 // Home page > Display 413 Settings.AdaptiveBrightnessActivity.class.getName(), 414 // Home page > Security & screen lock 415 Settings.LocationSettingsActivity.class.getName(), 416 // Home page > System 417 Settings.LanguageAndInputSettingsActivity.class.getName(), 418 Settings.LanguageSettingsActivity.class.getName(), 419 Settings.KeyboardSettingsActivity.class.getName(), 420 Settings.DateTimeSettingsActivity.class.getName(), 421 Settings.EnterprisePrivacySettingsActivity.class.getName(), 422 Settings.MyDeviceInfoActivity.class.getName(), 423 Settings.ModuleLicensesActivity.class.getName(), 424 UserBackupSettingsActivity.class.getName(), 425 Settings.MemtagPageActivity.class.getName(), 426 Settings.NavigationModeSettingsActivity.class.getName(), 427 }; 428 } 429