blob: e373ccccd1dc13d8517b5be18ce3a51af5088745 [file] [log] [blame]
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -08001/*
2 * Copyright (C) 2008 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
17package com.android.settings;
18
Jay Thomas Sullivanecc0a452022-05-05 20:56:43 +000019import static android.provider.Settings.ACTION_PRIVACY_SETTINGS;
20
Julia Reynoldsdea51022024-06-12 20:48:32 -040021import android.annotation.FlaggedApi;
22import android.app.Flags;
Jan Tomljanovic4436b7f2021-12-10 15:09:31 +000023import android.content.ActivityNotFoundException;
Zhen Zhangaaf5fe52020-02-18 15:10:32 -080024import android.content.Intent;
Bartosz Fabianowski92d25fb2017-03-24 18:04:31 +010025import android.os.Bundle;
Zoey Chen6978a902021-12-14 18:42:37 +080026import android.telephony.ims.ImsRcsManager;
Jan Tomljanovic07bffff2021-04-27 20:58:12 +010027import android.text.TextUtils;
Jan Tomljanovic4436b7f2021-12-10 15:09:31 +000028import android.util.Log;
Bartosz Fabianowski92d25fb2017-03-24 18:04:31 +010029
Weng Su64987b02024-08-23 06:16:33 +080030import androidx.annotation.Nullable;
31
Jan Tomljanovic07bffff2021-04-27 20:58:12 +010032import com.android.internal.annotations.VisibleForTesting;
Yuri Ufimtsevbe982452022-03-09 09:49:15 +000033import com.android.settings.biometrics.face.FaceSettings;
Lucas Silva3b1c7392023-04-12 15:22:39 -040034import com.android.settings.communal.CommunalPreferenceController;
Bartosz Fabianowski92d25fb2017-03-24 18:04:31 +010035import com.android.settings.enterprise.EnterprisePrivacySettings;
Bonian Chend10618d2022-05-30 19:06:10 +080036import com.android.settings.network.MobileNetworkIntentConverter;
Jason Parks9f424cd2020-11-17 13:31:59 -060037import com.android.settings.overlay.FeatureFactory;
Marie Mathesonce321f02022-02-18 22:57:17 +000038import com.android.settings.safetycenter.SafetyCenterManagerWrapper;
Jan Tomljanovic07bffff2021-04-27 20:58:12 +010039import com.android.settings.security.SecuritySettingsFeatureProvider;
Weng Su64987b02024-08-23 06:16:33 +080040import com.android.settings.wifi.WifiUtils;
Amith Yamasanid7993472010-08-18 13:59:28 -070041
Tsung-Mao Fangd3cd7512021-05-05 15:43:54 +080042import com.google.android.setupdesign.util.ThemeHelper;
43
Amith Yamasanid7993472010-08-18 13:59:28 -070044/**
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -080045 * Top-level Settings activity
Amith Yamasanid7993472010-08-18 13:59:28 -070046 */
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -080047public class Settings extends SettingsActivity {
Christopher Tatee0d934f2013-10-01 12:32:27 -070048
Amith Yamasani5203bdf2010-11-04 09:59:44 -070049 /*
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -080050 * Settings subclasses for launching independently.
51 */
Florian Mayerce174932022-11-07 17:27:52 -080052
53 public static class MemtagPageActivity extends SettingsActivity { /* empty */}
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -080054 public static class BluetoothSettingsActivity extends SettingsActivity { /* empty */ }
chelseahao682a8312024-05-24 14:14:20 +080055 public static class BluetoothDashboardActivity extends SettingsActivity { /* empty */ }
Fan Zhangf1f0f8b2018-06-22 10:40:07 -070056 public static class CreateShortcutActivity extends SettingsActivity { /* empty */ }
Wenhui Yangd26f18f2023-07-25 18:49:31 +000057 public static class FaceSettingsActivity extends SettingsActivity { /* empty */ }
Yuri Ufimtsevbe982452022-03-09 09:49:15 +000058 /** Container for {@link FaceSettings} to use with a pre-defined task affinity. */
Wenhui Yangd26f18f2023-07-25 18:49:31 +000059 public static class FaceSettingsInternalActivity extends SettingsActivity { /* empty */ }
Ilya Matyukhin8979f842019-04-28 15:10:02 -070060 public static class FingerprintSettingsActivity extends SettingsActivity { /* empty */ }
Joshua McCloskey9642d1e2023-04-13 19:58:26 +000061 public static class FingerprintSettingsActivityV2 extends SettingsActivity { /* empty */ }
Mill Chen7edebee2021-04-09 23:14:27 +080062 public static class CombinedBiometricSettingsActivity extends SettingsActivity { /* empty */ }
63 public static class CombinedBiometricProfileSettingsActivity extends SettingsActivity { /* empty */ }
Chaohui Wang0664d3c2023-11-30 12:03:51 +080064 public static class TetherSettingsActivity extends SettingsActivity { /* empty */ }
65 public static class WifiTetherSettingsActivity extends SettingsActivity { /* empty */ }
josephpv0b7d4672023-12-08 16:11:25 +000066 public static class PrivateSpaceBiometricSettingsActivity extends SettingsActivity {
67 /* empty */
68 }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -080069 public static class VpnSettingsActivity extends SettingsActivity { /* empty */ }
Jason Chiu29a09e52021-10-12 17:24:34 +080070 /** Activity for Data saver settings. */
71 public static class DataSaverSummaryActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -080072 public static class DateTimeSettingsActivity extends SettingsActivity { /* empty */ }
Jeff Sharkeya16257d2015-04-28 13:41:01 -070073 public static class PrivateVolumeForgetActivity extends SettingsActivity { /* empty */ }
Jeff Sharkeye77f0682015-04-29 11:24:57 -070074 public static class PublicVolumeSettingsActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -080075 public static class WifiSettingsActivity extends SettingsActivity { /* empty */ }
Arc Wang746176e2020-09-02 17:35:56 +080076 public static class NetworkProviderSettingsActivity extends SettingsActivity { /* empty */ }
SongFerng Wangfa6a3612021-12-08 14:25:41 +000077 public static class NetworkSelectActivity extends SettingsActivity { /* empty */ }
Weng Su29f4a352021-07-15 11:38:38 +080078 /** Activity for the Wi-Fi network details settings. */
Weng Su64987b02024-08-23 06:16:33 +080079 public static class WifiDetailsSettingsActivity extends SettingsActivity {
80 @Override
81 protected void createUiFromIntent(@Nullable Bundle savedState, Intent intent) {
Weng Sua21fbfa2024-08-23 17:41:10 +080082 Bundle bundle = intent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
Weng Su64987b02024-08-23 06:16:33 +080083 if (TextUtils.isEmpty(bundle.getString(WifiUtils.KEY_CHOSEN_WIFIENTRY_KEY))) {
84 Log.e(getLocalClassName(), "The key of WifiEntry is empty!");
85 finishAndRemoveTask();
86 return;
87 }
88 super.createUiFromIntent(savedState, intent);
89 }
90 }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -080091 public static class WifiP2pSettingsActivity extends SettingsActivity { /* empty */ }
Abodunrinwa Toki976bb3f2016-01-20 18:43:20 +000092 public static class AvailableVirtualKeyboardActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -080093 public static class KeyboardLayoutPickerActivity extends SettingsActivity { /* empty */ }
Abodunrinwa Tokib28b2cc2016-03-22 16:29:38 +000094 public static class PhysicalKeyboardActivity extends SettingsActivity { /* empty */ }
shaoweishenb7616da2024-07-08 02:52:58 +000095 public static class PhysicalKeyboardLayoutPickerActivity extends SettingsActivity {
96 /* empty */
97 }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -080098 public static class InputMethodAndSubtypeEnablerActivity extends SettingsActivity { /* empty */ }
99 public static class SpellCheckersSettingsActivity extends SettingsActivity { /* empty */ }
100 public static class LocalePickerActivity extends SettingsActivity { /* empty */ }
danielwbhuangc9cb6802022-08-17 22:17:08 +0800101 public static class LanguageSettingsActivity extends SettingsActivity { /* empty */ }
tom hsuc03ff3b2023-01-04 08:57:43 +0800102 /** Activity for the regional preferences settings. */
danielwbhuang4e1bf7d2024-12-25 20:26:49 +0800103 public static class RegionSettingsActivity extends SettingsActivity { /* empty */ }
tom hsuc03ff3b2023-01-04 08:57:43 +0800104 public static class RegionalPreferencesActivity extends SettingsActivity { /* empty */ }
danielwbhuang46a75402024-11-26 19:04:34 +0800105 public static class TemperatureUnitSettingsActivity extends SettingsActivity { /* empty */ }
106 public static class FirstDayOfWeekSettingsActivity extends SettingsActivity { /* empty */ }
danielwbhuang4e1bf7d2024-12-25 20:26:49 +0800107 public static class MeasurementSystemSettingsActivity extends SettingsActivity { /* empty */ }
108 public static class NumberingSystemSettingsActivity extends SettingsActivity { /* empty */ }
danielwbhuangc9cb6802022-08-17 22:17:08 +0800109 public static class KeyboardSettingsActivity extends SettingsActivity { /* empty */ }
Jagrut Desaic36081b2023-04-20 13:50:02 -0700110 /** Activity for the navigation mode settings. */
111 public static class NavigationModeSettingsActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800112 public static class UserDictionarySettingsActivity extends SettingsActivity { /* empty */ }
Jay Aliomer82a0ea02019-12-10 14:49:27 -0500113 public static class DarkThemeSettingsActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800114 public static class DisplaySettingsActivity extends SettingsActivity { /* empty */ }
Justin Klaasseneae3d9f2016-07-21 19:25:17 -0700115 public static class NightDisplaySettingsActivity extends SettingsActivity { /* empty */ }
Sean Stout2bc94d62017-05-18 13:39:25 -0700116 public static class NightDisplaySuggestionActivity extends NightDisplaySettingsActivity { /* empty */ }
Abel Tesfaye029c0952021-03-04 21:55:47 +0000117 public static class SmartAutoRotateSettingsActivity extends SettingsActivity { /* empty */ }
Fan Zhang881d5792018-01-26 10:15:56 -0800118 public static class MyDeviceInfoActivity extends SettingsActivity { /* empty */ }
Andrew Sapperstein56a8c332019-06-18 09:44:18 -0700119 public static class ModuleLicensesActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800120 public static class ApplicationSettingsActivity extends SettingsActivity { /* empty */ }
121 public static class ManageApplicationsActivity extends SettingsActivity { /* empty */ }
Jason Chiu85998122024-11-01 09:58:27 +0800122 public static class AppStorageSettingsActivity extends SettingsActivity { /* empty */ }
Xiyuan Xia86a55402015-06-02 14:55:32 -0700123 public static class ManageAssistActivity extends SettingsActivity { /* empty */ }
Jason Monk1eb54eb2015-04-29 12:46:42 -0400124 public static class HighPowerApplicationsActivity extends SettingsActivity { /* empty */ }
Dianne Hackbornf467c0a2015-12-07 16:36:09 -0800125 public static class BackgroundCheckSummaryActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800126 public static class StorageUseActivity extends SettingsActivity { /* empty */ }
Chaohui Wangee7139a2023-11-24 00:15:17 +0800127 public static class DevelopmentSettingsActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800128 public static class AccessibilitySettingsActivity extends SettingsActivity { /* empty */ }
Jackal Guo29365512019-02-14 15:19:53 +0800129 public static class AccessibilityDetailsSettingsActivity extends SettingsActivity { /* empty */ }
Riley Jones4e195502024-01-04 00:06:18 +0000130 public static class AccessibilityEditShortcutsActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800131 public static class CaptioningSettingsActivity extends SettingsActivity { /* empty */ }
132 public static class AccessibilityInversionSettingsActivity extends SettingsActivity { /* empty */ }
133 public static class AccessibilityContrastSettingsActivity extends SettingsActivity { /* empty */ }
134 public static class AccessibilityDaltonizerSettingsActivity extends SettingsActivity { /* empty */ }
Jason Chiu29a09e52021-10-12 17:24:34 +0800135 /** Activity for lockscreen settings. */
Silin Huangc80b3ab2021-05-13 23:59:33 -0700136 public static class LockScreenSettingsActivity extends SettingsActivity { /* empty */ }
Yining Liu2ad1f262024-12-16 22:38:45 +0000137 /** Activity for notifications on lockscreen settings. */
138 public static class LockScreenNotificationsSettingsActivity
139 extends SettingsActivity { /* empty */ }
shaoweishen1b58ba52021-12-03 08:47:15 +0000140 /** Activity for bluetooth pairing settings. */
141 public static class BlueToothPairingActivity extends SettingsActivity { /* empty */ }
Jason Chiu29a09e52021-10-12 17:24:34 +0800142 /** Activity for Reduce Bright Colors. */
Sally9fe91b92020-10-16 22:45:27 +0000143 public static class ReduceBrightColorsSettingsActivity extends SettingsActivity { /* empty */ }
menghanli38714382022-09-28 13:14:51 +0800144 /** Activity for text reading settings. */
145 public static class TextReadingSettingsActivity extends SettingsActivity { /* empty */ }
menghanli3c62eb12022-10-04 08:13:16 +0800146 /** Activity for text color and motion settings. */
147 public static class ColorAndMotionActivity extends SettingsActivity { /* empty */ }
marcusgecddd7b32024-02-09 00:03:00 +0000148 /** Activity for color contrast settings. */
149 public static class ColorContrastActivity extends SettingsActivity { /* empty */ }
Jan Tomljanovic07bffff2021-04-27 20:58:12 +0100150 /** Activity for the security dashboard. */
151 public static class SecurityDashboardActivity extends SettingsActivity {
152
Jan Tomljanovic4436b7f2021-12-10 15:09:31 +0000153 private static final String TAG = "SecurityDashboardActivity";
154
155 @Override
156 protected void onCreate(Bundle savedState) {
157 super.onCreate(savedState);
158 handleSafetyCenterRedirection();
159 }
160
161 /** Redirects to SafetyCenter if enabled. */
162 @VisibleForTesting
163 public void handleSafetyCenterRedirection() {
Simon Wingrove48841572022-10-17 14:50:50 +0100164 if (isFinishing()) {
165 // Don't trampoline if already exiting this activity.
166 return;
167 }
168
Marie Mathesonce321f02022-02-18 22:57:17 +0000169 if (SafetyCenterManagerWrapper.get().isEnabled(this)) {
Jan Tomljanovic4436b7f2021-12-10 15:09:31 +0000170 try {
Jason Chiucf13dfd2024-03-27 12:25:32 +0800171 startActivity(new Intent(Intent.ACTION_SAFETY_CENTER)
172 .setPackage(getPackageManager().getPermissionControllerPackageName()));
Jan Tomljanovic4436b7f2021-12-10 15:09:31 +0000173 finish();
174 } catch (ActivityNotFoundException e) {
175 Log.e(TAG, "Unable to open safety center", e);
176 }
177 }
178 }
179
Jan Tomljanovic07bffff2021-04-27 20:58:12 +0100180 /** Whether the given fragment is allowed. */
181 @VisibleForTesting
182 @Override
183 public boolean isValidFragment(String fragmentName) {
184 return super.isValidFragment(fragmentName)
185 || (fragmentName != null
186 && TextUtils.equals(fragmentName, getAlternativeFragmentName()));
187 }
188
189 @Override
190 public String getInitialFragmentName(Intent intent) {
191 final String alternativeFragmentName = getAlternativeFragmentName();
192 if (alternativeFragmentName != null) {
193 return alternativeFragmentName;
194 }
195
196 return super.getInitialFragmentName(intent);
197 }
198
199 private String getAlternativeFragmentName() {
200 String alternativeFragmentClassname = null;
201 final SecuritySettingsFeatureProvider securitySettingsFeatureProvider =
Chaohui Wang3cdf5b92023-07-17 12:03:05 +0800202 FeatureFactory.getFeatureFactory().getSecuritySettingsFeatureProvider();
Jan Tomljanovic07bffff2021-04-27 20:58:12 +0100203 if (securitySettingsFeatureProvider.hasAlternativeSecuritySettingsFragment()) {
204 alternativeFragmentClassname = securitySettingsFeatureProvider
205 .getAlternativeSecuritySettingsFragmentClassname();
206 }
207 return alternativeFragmentClassname;
208 }
209 }
Yuri Ufimtsev4eea1262021-12-03 15:43:11 +0000210 /** Activity for the Advanced security settings. */
Prabal Singha644a642023-02-13 17:41:06 +0000211 public static class SecurityAdvancedSettings extends SettingsActivity {
212 private static final String TAG = "SecurityAdvancedActivity";
213 @Override
214 protected void onCreate(Bundle savedState) {
215 super.onCreate(savedState);
216 handleMoreSettingsRedirection();
217 }
218
219 /** Redirects to More Settings if Safety center is enabled. */
220 @VisibleForTesting
221 public void handleMoreSettingsRedirection() {
222 if (isFinishing()) {
223 // Don't trampoline if already exiting this activity.
224 return;
225 }
226
227 if (SafetyCenterManagerWrapper.get().isEnabled(this)) {
228 try {
229 startActivity(
230 new Intent("com.android.settings.MORE_SECURITY_PRIVACY_SETTINGS"));
231 finish();
232 } catch (ActivityNotFoundException e) {
233 Log.e(TAG, "Unable to open More Settings", e);
234 }
235 }
236 }
237 }
Prabal Singh52ba1332022-12-06 14:28:10 +0000238 /** Activity for the More settings page. */
239 public static class MoreSecurityPrivacySettingsActivity extends SettingsActivity { /* empty */ }
Dianne Hackbornb51253c2014-08-12 15:08:04 -0700240 public static class UsageAccessSettingsActivity extends SettingsActivity { /* empty */ }
Fan Zhang104ee2e2018-09-20 16:21:53 -0700241 public static class AppUsageAccessSettingsActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800242 public static class LocationSettingsActivity extends SettingsActivity { /* empty */ }
Lifu Tangf72f8302018-04-12 10:01:29 -0700243 public static class ScanningSettingsActivity extends SettingsActivity { /* empty */ }
Weng Su9e6966d2021-10-13 23:08:50 +0800244 public static class WifiScanningSettingsActivity extends SettingsActivity { /* empty */ }
Jan Tomljanovic4436b7f2021-12-10 15:09:31 +0000245 /** Activity for the privacy dashboard. */
246 public static class PrivacyDashboardActivity extends SettingsActivity {
247
248 private static final String TAG = "PrivacyDashboardActivity";
249
250 @Override
251 protected void onCreate(Bundle savedState) {
252 super.onCreate(savedState);
253 handleSafetyCenterRedirection();
254 }
255
256 /** Redirects to SafetyCenter if enabled. */
257 @VisibleForTesting
258 public void handleSafetyCenterRedirection() {
Simon Wingrove48841572022-10-17 14:50:50 +0100259 if (isFinishing()) {
260 // Don't trampoline if already exiting this activity.
261 return;
262 }
263
Jay Thomas Sullivanecc0a452022-05-05 20:56:43 +0000264 if (ACTION_PRIVACY_SETTINGS.equals(getIntent().getAction())
265 && SafetyCenterManagerWrapper.get().isEnabled(this)) {
Jan Tomljanovic4436b7f2021-12-10 15:09:31 +0000266 try {
Jason Chiucf13dfd2024-03-27 12:25:32 +0800267 startActivity(new Intent(Intent.ACTION_SAFETY_CENTER)
268 .setPackage(getPackageManager().getPermissionControllerPackageName()));
Jan Tomljanovic4436b7f2021-12-10 15:09:31 +0000269 finish();
270 } catch (ActivityNotFoundException e) {
271 Log.e(TAG, "Unable to open safety center", e);
272 }
273 }
274 }
275 }
Nate Myrend1749cf2022-04-22 13:58:50 -0700276 public static class PrivacyControlsActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800277 public static class PrivacySettingsActivity extends SettingsActivity { /* empty */ }
Mill Chen1e607902021-02-25 15:03:25 +0800278 public static class FactoryResetActivity extends SettingsActivity {
279 @Override
280 protected void onCreate(Bundle savedState) {
281 setTheme(SetupWizardUtils.getTheme(this, getIntent()));
Tsung-Mao Fangd3cd7512021-05-05 15:43:54 +0800282 ThemeHelper.trySetDynamicColor(this);
Mill Chen1e607902021-02-25 15:03:25 +0800283 super.onCreate(savedState);
284 }
285
286 @Override
287 protected boolean isToolbarEnabled() {
288 return false;
289 }
290 }
291 public static class FactoryResetConfirmActivity extends SettingsActivity {
292 @Override
293 protected void onCreate(Bundle savedState) {
294 setTheme(SetupWizardUtils.getTheme(this, getIntent()));
Tsung-Mao Fangd3cd7512021-05-05 15:43:54 +0800295 ThemeHelper.trySetDynamicColor(this);
Mill Chen1e607902021-02-25 15:03:25 +0800296 super.onCreate(savedState);
297 }
298
299 @Override
300 protected boolean isToolbarEnabled() {
301 return false;
302 }
303 }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800304 public static class RunningServicesActivity extends SettingsActivity { /* empty */ }
John Spurlockc7f8e8c2014-06-04 19:11:22 -0400305 public static class BatterySaverSettingsActivity extends SettingsActivity { /* empty */ }
Salvador Martinez32917042019-03-20 15:23:19 -0700306 public static class BatterySaverScheduleSettingsActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800307 public static class AccountSyncSettingsActivity extends SettingsActivity { /* empty */ }
308 public static class AccountSyncSettingsInAddAccountActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800309 public static class DeviceAdminSettingsActivity extends SettingsActivity { /* empty */ }
310 public static class DataUsageSummaryActivity extends SettingsActivity { /* empty */ }
Malcolm Chen52584e92017-06-20 11:14:27 -0700311 public static class MobileDataUsageListActivity extends SettingsActivity { /* empty */ }
Amin Shaikh3aa547b2017-01-06 18:31:41 -0800312 public static class ConfigureWifiSettingsActivity extends SettingsActivity { /* empty */ }
PauloftheWest7837b992014-06-24 07:42:27 -0700313 public static class SavedAccessPointsSettingsActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800314 public static class TextToSpeechSettingsActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800315 public static class WifiDisplaySettingsActivity extends SettingsActivity { /* empty */ }
316 public static class DreamSettingsActivity extends SettingsActivity { /* empty */ }
Lucas Silva3b1c7392023-04-12 15:22:39 -0400317 /** Activity to manage communal settings */
318 public static class CommunalSettingsActivity extends SettingsActivity {
319 @Override
320 public void onCreate(Bundle savedInstanceState) {
321 super.onCreate(savedInstanceState);
322 if (!CommunalPreferenceController.isAvailable(this)) {
323 finish();
324 }
325 }
326 }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800327 public static class NotificationStationActivity extends SettingsActivity { /* empty */ }
328 public static class UserSettingsActivity extends SettingsActivity { /* empty */ }
329 public static class NotificationAccessSettingsActivity extends SettingsActivity { /* empty */ }
Julia Reynolds31dc1fd2019-10-29 15:15:08 -0400330 public static class NotificationAccessDetailsActivity extends SettingsActivity { /* empty */ }
Lyn60d3a112024-06-17 23:04:01 +0000331 public static class ManageAdaptiveNotificationsActivity extends SettingsActivity { /* empty */ }
Ruben Brunkc461d5c2016-04-07 21:45:41 -0700332 public static class VrListenersSettingsActivity extends SettingsActivity { /* empty */ }
Amber Ogata9d5de292020-12-16 20:37:22 +0000333 public static class PremiumSmsAccessActivity extends SettingsActivity { /* empty */ }
Winson Chung0a0d95a2017-01-20 11:22:44 -0800334 public static class PictureInPictureSettingsActivity extends SettingsActivity { /* empty */ }
Philip Junker8a978052022-03-14 18:08:46 +0000335 public static class TurnScreenOnSettingsActivity extends SettingsActivity { /* empty */ }
Philip Junkerded7f452023-04-19 11:59:19 +0000336 public static class AppTurnScreenOnSettingsActivity extends SettingsActivity { /* empty */ }
Winson Chung217d0e92017-03-17 15:48:38 -0700337 public static class AppPictureInPictureSettingsActivity extends SettingsActivity { /* empty */ }
John Spurlock08531a82015-05-07 17:45:43 -0400338 public static class ZenAccessSettingsActivity extends SettingsActivity { /* empty */ }
Fan Zhange366f022019-03-19 13:08:10 -0700339 public static class ZenAccessDetailSettingsActivity extends SettingsActivity {}
John Spurlockc9afadb2014-04-29 18:07:23 -0400340 public static class ConditionProviderSettingsActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800341 public static class UsbSettingsActivity extends SettingsActivity { /* empty */ }
Jerry Zhangd18d6f12018-01-11 16:47:14 -0800342 public static class UsbDetailsActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800343 public static class TrustedCredentialsSettingsActivity extends SettingsActivity { /* empty */ }
344 public static class PaymentSettingsActivity extends SettingsActivity { /* empty */ }
345 public static class PrintSettingsActivity extends SettingsActivity { /* empty */ }
346 public static class PrintJobSettingsActivity extends SettingsActivity { /* empty */ }
John Spurlock72438062014-02-27 18:01:20 -0500347 public static class ZenModeSettingsActivity extends SettingsActivity { /* empty */ }
John Spurlockd8b36832015-04-03 15:11:33 -0400348 public static class ZenModeAutomationSettingsActivity extends SettingsActivity { /* empty */ }
John Spurlock45fa1402015-04-09 12:50:04 -0400349 public static class ZenModeScheduleRuleSettingsActivity extends SettingsActivity { /* empty */ }
John Spurlockf57bad72015-04-30 09:26:15 -0400350 public static class ZenModeEventRuleSettingsActivity extends SettingsActivity { /* empty */ }
Julia Reynoldsdea51022024-06-12 20:48:32 -0400351 @FlaggedApi(Flags.FLAG_MODES_UI)
352 public static class ModeSettingsActivity extends SettingsActivity { /* empty */ }
353 @FlaggedApi(Flags.FLAG_MODES_UI)
354 public static class ModesSettingsActivity extends SettingsActivity { /* empty */ }
Julia Reynolds8c0a4232015-11-24 10:08:14 -0500355 public static class SoundSettingsActivity extends SettingsActivity { /* empty */ }
356 public static class ConfigureNotificationSettingsActivity extends SettingsActivity { /* empty */ }
Julia Reynolds6a88e142020-06-02 11:20:13 -0400357 public static class ConversationListSettingsActivity extends SettingsActivity { /* empty */ }
Julia Reynolds4e48da92019-03-26 09:04:22 -0400358 public static class AppBubbleNotificationSettingsActivity extends SettingsActivity { /* empty */ }
Fabian Kozynski01b2a632019-02-20 12:55:10 -0500359 public static class NotificationAssistantSettingsActivity extends SettingsActivity{ /* empty */ }
Julia Reynoldsff9500d2018-03-21 15:23:13 -0400360 public static class NotificationAppListActivity extends SettingsActivity { /* empty */ }
“Ankitaa6ff8972022-10-03 05:01:00 +0000361 /** Activity to manage Cloned Apps page */
362 public static class ClonedAppsListActivity extends SettingsActivity { /* empty */ }
Graciela Wissen Putrib4c4f6c2023-07-04 15:10:29 +0000363 /** Activity to manage Aspect Ratio app list page */
364 public static class UserAspectRatioAppListActivity extends SettingsActivity { /* empty */ }
Massimo Carli1dc17512023-09-21 10:33:57 +0000365 /** Activity to manage Aspect Ratio app page */
366 public static class UserAspectRatioAppActivity extends SettingsActivity { /* empty */ }
Yuri Lin554ab1f2022-04-12 17:05:49 -0400367 public static class NotificationReviewPermissionsActivity extends SettingsActivity { /* empty */ }
John Spurlock81bef1d72014-05-16 15:50:13 -0400368 public static class AppNotificationSettingsActivity extends SettingsActivity { /* empty */ }
Julia Reynolds69492882017-01-25 10:32:07 -0500369 public static class ChannelNotificationSettingsActivity extends SettingsActivity { /* empty */ }
Julia Reynolds0c3f4bc2017-08-25 09:40:24 -0400370 public static class ChannelGroupNotificationSettingsActivity extends SettingsActivity { /* empty */ }
Todd Kennedy2ef1aa52016-09-06 14:02:38 -0700371 public static class ManageDomainUrlsActivity extends SettingsActivity { /* empty */ }
Daniel Nishi39818892016-09-20 16:40:49 -0700372 public static class AutomaticStorageManagerSettingsActivity extends SettingsActivity { /* empty */ }
Daniel Nishic208eff2017-01-11 17:50:02 -0800373 public static class GamesStorageActivity extends SettingsActivity { /* empty */ }
Mehdi Alizadeh03555962019-12-13 15:31:53 -0800374 public static class GestureNavigationSettingsActivity extends SettingsActivity { /* empty */ }
Jernej Virag97ea2792021-08-09 18:11:28 +0000375 /** Activity to manage 2-/3-button navigation configuration. */
376 public static class ButtonNavigationSettingsActivity extends SettingsActivity { /* empty */ }
kholoud mohamed14a887f2020-01-29 17:38:31 +0000377 public static class InteractAcrossProfilesSettingsActivity extends SettingsActivity {
378 /* empty */
379 }
380 public static class AppInteractAcrossProfilesSettingsActivity extends SettingsActivity {
381 /* empty */
382 }
Fabrice Di Meglio263bcc82014-01-17 19:17:58 -0800383
yomna5599de42024-01-23 22:49:11 +0000384 public static class CellularSecuritySettingsActivity extends SettingsActivity { /* empty */ }
Hakjun Choi2f57f532024-01-09 20:00:15 +0000385 public static class SatelliteSettingActivity extends SettingsActivity { /* empty */ }
Fabrice Di Meglio61a1fec2014-08-13 16:22:38 -0700386 public static class ApnSettingsActivity extends SettingsActivity { /* empty */ }
Pavel Zhamaitsiak4ab32562015-02-23 15:34:07 -0800387 public static class WifiCallingSettingsActivity extends SettingsActivity { /* empty */ }
Jason Monk2acff552015-06-11 15:47:29 -0400388 public static class MemorySettingsActivity extends SettingsActivity { /* empty */ }
Muyuan Liba115af2016-03-25 15:46:12 -0700389 public static class AppMemoryUsageActivity extends SettingsActivity { /* empty */ }
Billy Lau7f70ba12015-07-03 17:01:18 +0100390 public static class OverlaySettingsActivity extends SettingsActivity { /* empty */ }
shafik430b94b2020-01-06 13:50:10 +0000391 public static class ManageExternalStorageActivity extends SettingsActivity { /* empty */ }
shafika54d7a82020-01-08 18:03:22 +0000392 public static class AppManageExternalStorageActivity extends SettingsActivity { /* empty */ }
Ivan Chiangd01c81e2021-03-09 10:39:45 +0800393 public static class MediaManagementAppsActivity extends SettingsActivity { /* empty */ }
394 public static class AppMediaManagementAppsActivity extends SettingsActivity { /* empty */ }
Billy Lau7f70ba12015-07-03 17:01:18 +0100395 public static class WriteSettingsActivity extends SettingsActivity { /* empty */ }
xshu3f048972018-01-31 17:40:37 -0800396 public static class ChangeWifiStateActivity extends SettingsActivity { /* empty */ }
George2c5d1f82023-01-02 18:13:43 +0800397 /** Activity to manage NFC Tag applications. */
398 public static class ChangeNfcTagAppsActivity extends SettingsActivity { /* empty */ }
Bernardo Rufino88540312019-11-25 19:40:53 +0000399 public static class AppDrawOverlaySettingsActivity extends SettingsActivity { /* empty */ }
Billy Laufee78562015-07-27 12:57:07 +0100400 public static class AppWriteSettingsActivity extends SettingsActivity { /* empty */ }
Tiffany Nguyen3acd34f2022-08-02 17:26:10 +0000401 /** Activity to manage app battery usage details. */
402 public static class AppBatteryUsageActivity extends SettingsActivity { /* empty */ }
Jason Monk4da79e02015-09-10 10:54:36 -0400403
Fan Zhang372789b2018-01-23 14:26:30 -0800404 public static class ManageExternalSourcesActivity extends SettingsActivity {/* empty */ }
Suprabh Shuklaf59d2112017-03-06 17:51:05 -0800405 public static class ManageAppExternalSourcesActivity extends SettingsActivity { /* empty */ }
Vladislav Kaznacheev6e93bdd2016-03-09 14:24:45 -0800406 public static class WallpaperSettingsActivity extends SettingsActivity { /* empty */ }
Tony Mak64f6d982016-05-03 18:55:41 +0100407 public static class ManagedProfileSettingsActivity extends SettingsActivity { /* empty */ }
Daniel Nishi287d9112016-05-03 18:00:49 -0700408 public static class DeletionHelperActivity extends SettingsActivity { /* empty */ }
Jason Monkb9e5d232016-01-26 17:43:57 -0500409
Suprabh Shuklac8b92402021-02-17 18:00:35 -0800410 /** Actviity to manage apps with {@link android.Manifest.permission#SCHEDULE_EXACT_ALARM} */
411 public static class AlarmsAndRemindersActivity extends SettingsActivity {/* empty */ }
412 /** App specific version of {@link AlarmsAndRemindersActivity} */
413 public static class AlarmsAndRemindersAppActivity extends SettingsActivity {/* empty */ }
kholoud mohamed14a887f2020-01-29 17:38:31 +0000414
Jason Monkb7e43802016-06-06 16:01:58 -0400415 public static class ApnEditorActivity extends SettingsActivity { /* empty */ }
416 public static class ChooseAccountActivity extends SettingsActivity { /* empty */ }
417 public static class IccLockSettingsActivity extends SettingsActivity { /* empty */ }
Jason Monkb7e43802016-06-06 16:01:58 -0400418 public static class TestingSettingsActivity extends SettingsActivity { /* empty */ }
419 public static class WifiAPITestActivity extends SettingsActivity { /* empty */ }
420 public static class WifiInfoActivity extends SettingsActivity { /* empty */ }
Bartosz Fabianowski92d25fb2017-03-24 18:04:31 +0100421 public static class EnterprisePrivacySettingsActivity extends SettingsActivity {
422 @Override
423 public void onCreate(Bundle savedInstanceState) {
424 super.onCreate(savedInstanceState);
Chaohui Wang3cdf5b92023-07-17 12:03:05 +0800425 if (FeatureFactory.getFeatureFactory().getEnterprisePrivacyFeatureProvider()
Jason Parks9f424cd2020-11-17 13:31:59 -0600426 .showParentalControls()) {
427 finish();
428 } else if (!EnterprisePrivacySettings.isPageEnabled(this)) {
Bartosz Fabianowski92d25fb2017-03-24 18:04:31 +0100429 finish();
430 }
431 }
432 }
Gustav Sennton5b596282017-02-03 16:19:02 +0000433 public static class WebViewAppPickerActivity extends SettingsActivity { /* empty */ }
hughchenbd3e5de2018-03-23 16:14:13 +0800434 public static class AdvancedConnectedDeviceActivity extends SettingsActivity { /* empty */ }
Viesturs Zarins6cfc5932022-09-15 16:17:47 +0000435 public static class NfcSettingsActivity extends SettingsActivity { /* empty */ }
jackqdyulei715408e2019-02-07 15:47:52 -0800436 public static class BluetoothDeviceDetailActivity extends SettingsActivity { /* empty */ }
Vania Januareb09f892022-12-30 13:24:29 +0000437 public static class StylusUsiDetailsActivity extends SettingsActivity { /* empty */ }
changbettya56e1982022-03-29 01:14:05 +0000438 public static class BluetoothBroadcastActivity extends SettingsActivity { /* empty */ }
439 public static class BluetoothFindBroadcastsActivity extends SettingsActivity { /* empty */ }
manabu, shimoda9fae7392017-11-08 11:32:31 +0900440 public static class WifiCallingDisclaimerActivity extends SettingsActivity { /* empty */ }
Antony Sargent94d97902019-03-26 09:50:22 -0700441 public static class MobileNetworkListActivity extends SettingsActivity {}
Fabian Kozynski83df54b2020-03-24 16:37:57 -0400442 public static class PowerMenuSettingsActivity extends SettingsActivity {}
Zoey Chen6978a902021-12-14 18:42:37 +0800443 public static class MobileNetworkActivity extends SettingsActivity {
444
Bonian Chend10618d2022-05-30 19:06:10 +0800445 public static final String TAG = "MobileNetworkActivity";
Zoey Chen6978a902021-12-14 18:42:37 +0800446 public static final String EXTRA_MMS_MESSAGE = "mms_message";
447 public static final String EXTRA_SHOW_CAPABILITY_DISCOVERY_OPT_IN =
448 "show_capability_discovery_opt_in";
449
Bonian Chend10618d2022-05-30 19:06:10 +0800450 private MobileNetworkIntentConverter mIntentConverter;
451
452 /**
453 * Override of #onNewIntent() requires Activity to have "singleTop" launch mode within
454 * AndroidManifest.xml
455 */
Zoey Chen6978a902021-12-14 18:42:37 +0800456 @Override
Bonian Chend10618d2022-05-30 19:06:10 +0800457 protected void onNewIntent(Intent intent) {
458 super.onNewIntent(intent);
Zoey Chen6978a902021-12-14 18:42:37 +0800459
Bonian Chend10618d2022-05-30 19:06:10 +0800460 Log.d(TAG, "Starting onNewIntent");
tomhsu74c7f9b2024-09-05 14:00:56 +0000461 setIntent(intent);
Bonian Chend10618d2022-05-30 19:06:10 +0800462 createUiFromIntent(null /* savedState */, convertIntent(intent));
Zoey Chen6978a902021-12-14 18:42:37 +0800463 }
464
Bonian Chend10618d2022-05-30 19:06:10 +0800465 @Override
466 public Intent getIntent() {
467 return convertIntent(super.getIntent());
468 }
469
470 private Intent convertIntent(Intent copyFrom) {
471 if (mIntentConverter == null) {
472 mIntentConverter = new MobileNetworkIntentConverter(this);
473 }
474 Intent intent = mIntentConverter.apply(copyFrom);
475 return (intent == null) ? copyFrom : intent;
Zoey Chen6978a902021-12-14 18:42:37 +0800476 }
477
478 public static boolean doesIntentContainOptInAction(Intent intent) {
479 String intentAction = (intent != null ? intent.getAction() : null);
480 return TextUtils.equals(intentAction,
481 ImsRcsManager.ACTION_SHOW_CAPABILITY_DISCOVERY_OPT_IN);
482 }
483 }
Zoey Chen989dd662021-11-19 21:22:21 +0800484
Varun Shah4109caa2023-02-08 17:41:22 +0000485 /** Actviity to manage apps with {@link android.Manifest.permission#RUN_USER_INITIATED_JOBS} */
Varun Shahb33256a2022-10-30 18:33:52 +0000486 public static class LongBackgroundTasksActivity extends SettingsActivity { /* empty */ }
487 /** App specific version of {@link LongBackgroundTasksActivity} */
488 public static class LongBackgroundTasksAppActivity extends SettingsActivity { /* empty */ }
489
Paul Chang6ae4c4d2019-11-28 22:38:49 +0800490 /**
491 * Activity for BugReportHandlerPicker.
492 */
493 public static class BugReportHandlerPickerActivity extends SettingsActivity { /* empty */ }
Jason Monkb7e43802016-06-06 16:01:58 -0400494
Fan Zhanga96a2d82016-09-27 17:51:11 -0700495 // Top level categories for new IA
Fan Zhangbb93dc02016-10-11 16:27:45 -0700496 public static class NetworkDashboardActivity extends SettingsActivity {}
Jerry Zhang40bd5702018-02-23 14:43:58 -0800497 public static class ConnectedDeviceDashboardActivity extends SettingsActivity {}
jackqdyulei166102c2017-11-27 13:49:19 -0800498 public static class PowerUsageSummaryActivity extends SettingsActivity { /* empty */ }
Jason Chiu82a44bf2024-10-30 19:31:55 +0800499 public static class PowerUsageAdvancedActivity extends SettingsActivity { /* empty */ }
Fan Zhangbb6d2602016-10-04 13:21:06 -0700500 public static class StorageDashboardActivity extends SettingsActivity {}
Fan Zhang881d5792018-01-26 10:15:56 -0800501 public static class AccountDashboardActivity extends SettingsActivity {}
Fan Zhangcc335d92016-09-29 14:37:14 -0700502 public static class SystemDashboardActivity extends SettingsActivity {}
Fan Zhanga96a2d82016-09-27 17:51:11 -0700503
Beth Thibodeau59cbd112020-06-09 23:38:41 -0400504 /**
505 * Activity for MediaControlsSettings
506 */
507 public static class MediaControlsSettingsActivity extends SettingsActivity {}
508
Yanting Yang92fce8e2020-12-17 23:26:49 +0800509 /**
510 * Activity for AppDashboard.
511 */
512 public static class AppDashboardActivity extends SettingsActivity {}
Jun Ono89c2c5e2019-05-30 12:56:43 +0900513
514 public static class AdaptiveBrightnessActivity extends SettingsActivity { /* empty */ }
Jason Changd1cf05c2021-10-21 16:12:15 +0800515
516 /**
517 * Activity for OneHandedSettings
518 */
519 public static class OneHandedSettingsActivity extends SettingsActivity { /* empty */ }
chelseahao4e19ccd2023-09-15 10:48:00 +0800520
521 public static class PreviouslyConnectedDeviceActivity extends SettingsActivity { /* empty */ }
Wesley Wang336c4412023-12-12 14:55:15 +0800522
523 public static class ScreenTimeoutActivity extends SettingsActivity { /* empty */ }
rambowangb0104482023-11-29 14:18:20 -0600524
525 /** Activity for the Reset mobile network settings. */
526 public static class ResetMobileNetworkSettingsActivity extends SettingsActivity { /* empty */ }
jasonwshsu4fad32b2024-03-13 15:20:42 +0800527
528 public static class HearingDevicesActivity extends SettingsActivity { /* empty */ }
529 public static class HearingDevicesPairingActivity extends SettingsActivity { /* empty */ }
Dongzhuo Zhang538a0102024-10-15 02:59:21 +0000530 public static class ContactsStorageSettingsActivity extends SettingsActivity { /* empty */ }
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -0800531}