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