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