diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d9e759b8366..26e7e12e3d6 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -4460,19 +4460,6 @@
-
-
-
-
-
-
-
-
-
Your device administrator may be able to access data
associated with this device, manage apps, and change this device\’s settings.
-
- Prevented by Advanced Protection
-
- This action is not allowed because Advanced Protection is on for your device.
-
Turn off
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 4de04d3f105..c81d504b223 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -311,10 +311,7 @@ public class SettingsActivity extends SettingsBaseActivity
}
setContentView(R.layout.settings_main_prefs);
-
- mMainSwitch = SettingsThemeHelper.isExpressiveTheme(this)
- ? findViewById(R.id.expressive_switch_bar)
- : findViewById(R.id.switch_bar);
+ mMainSwitch = findViewById(R.id.switch_bar);
if (mMainSwitch != null) {
mMainSwitch.setMetricsCategory(lookupMetricsCategory());
mMainSwitch.setTranslationZ(findViewById(R.id.main_content).getTranslationZ() + 1);
diff --git a/src/com/android/settings/SettingsApplication.java b/src/com/android/settings/SettingsApplication.java
index 99d3d922a0c..f2257d4dfdf 100644
--- a/src/com/android/settings/SettingsApplication.java
+++ b/src/com/android/settings/SettingsApplication.java
@@ -43,7 +43,8 @@ import com.android.settings.overlay.FeatureFactoryImpl;
import com.android.settings.spa.SettingsSpaEnvironment;
import com.android.settingslib.applications.AppIconCacheManager;
import com.android.settingslib.datastore.BackupRestoreStorageManager;
-import com.android.settingslib.metadata.PreferenceScreenMetadata;
+import com.android.settingslib.metadata.FixedArrayMap;
+import com.android.settingslib.metadata.PreferenceScreenMetadataCreator;
import com.android.settingslib.metadata.PreferenceScreenRegistry;
import com.android.settingslib.metadata.ProvidePreferenceScreenOptions;
import com.android.settingslib.preference.PreferenceBindingFactory;
@@ -52,7 +53,6 @@ import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory;
import com.google.android.setupcompat.util.WizardManagerHelper;
import java.lang.ref.WeakReference;
-import java.util.List;
/** Settings application which sets up activity embedding rules for the large screen device. */
@ProvidePreferenceScreenOptions(
@@ -75,8 +75,8 @@ public class SettingsApplication extends Application {
super.onCreate();
if (Flags.catalyst()) {
- PreferenceScreenRegistry.INSTANCE.setPreferenceScreensSupplier(
- this::getPreferenceScreens);
+ PreferenceScreenRegistry.INSTANCE.setPreferenceScreenMetadataCreators(
+ getPreferenceScreenCreators());
PreferenceBindingFactory.setDefaultFactory(new SettingsPreferenceBindingFactory());
}
@@ -106,11 +106,11 @@ public class SettingsApplication extends Application {
registerActivityLifecycleCallbacks(new DeveloperOptionsActivityLifecycle());
}
- /** Returns the screens using metadata. */
- protected List getPreferenceScreens() {
+ /** Returns the creators of preference screen metadata. */
+ protected FixedArrayMap getPreferenceScreenCreators() {
// PreferenceScreenCollector is generated by annotation processor from classes annotated
// with @ProvidePreferenceScreen
- return PreferenceScreenCollector.get(this);
+ return PreferenceScreenCollector.get();
}
@Override
diff --git a/src/com/android/settings/accessibility/ColorAndMotionScreen.kt b/src/com/android/settings/accessibility/ColorAndMotionScreen.kt
index 2d5eb0f8ea1..7cb403bddf5 100644
--- a/src/com/android/settings/accessibility/ColorAndMotionScreen.kt
+++ b/src/com/android/settings/accessibility/ColorAndMotionScreen.kt
@@ -26,7 +26,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(ColorAndMotionScreen.KEY)
class ColorAndMotionScreen : PreferenceScreenCreator {
override val key: String
get() = KEY
@@ -44,7 +44,7 @@ class ColorAndMotionScreen : PreferenceScreenCreator {
override fun fragmentClass() = ColorAndMotionFragment::class.java
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) {
+ preferenceHierarchy(context, this) {
+RemoveAnimationsPreference()
}
diff --git a/src/com/android/settings/accessibility/HighContrastTextMigrationReceiver.java b/src/com/android/settings/accessibility/HighContrastTextMigrationReceiver.java
index 803546707fd..8e311858f51 100644
--- a/src/com/android/settings/accessibility/HighContrastTextMigrationReceiver.java
+++ b/src/com/android/settings/accessibility/HighContrastTextMigrationReceiver.java
@@ -54,6 +54,9 @@ public class HighContrastTextMigrationReceiver extends BroadcastReceiver {
static final String ACTION_RESTORED =
"com.android.settings.accessibility.ACTION_HIGH_CONTRAST_TEXT_RESTORED";
@VisibleForTesting
+ static final String ACTION_OPEN_SETTINGS =
+ "com.android.settings.accessibility.ACTION_OPEN_HIGH_CONTRAST_TEXT_SETTINGS";
+ @VisibleForTesting
static final int NOTIFICATION_ID = 1;
@Retention(RetentionPolicy.SOURCE)
@@ -74,7 +77,16 @@ public class HighContrastTextMigrationReceiver extends BroadcastReceiver {
return;
}
- if (ACTION_RESTORED.equals(intent.getAction())) {
+ if (ACTION_OPEN_SETTINGS.equals(intent.getAction())) {
+ // Close notification drawer before opening the HCT setting.
+ context.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
+
+ Intent settingsIntent = createHighContrastTextSettingsIntent(context);
+ settingsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(settingsIntent);
+
+ context.getSystemService(NotificationManager.class).cancel(NOTIFICATION_ID);
+ } else if (ACTION_RESTORED.equals(intent.getAction())) {
Log.i(TAG, "HCT attempted to be restored from backup; showing notification for userId: "
+ context.getUserId());
Settings.Secure.putInt(context.getContentResolver(),
@@ -125,21 +137,20 @@ public class HighContrastTextMigrationReceiver extends BroadcastReceiver {
R.string.accessibility_notification_high_contrast_text_content))
.setFlag(Notification.FLAG_NO_CLEAR, true);
- Intent settingsIntent = new Intent(Settings.ACTION_TEXT_READING_SETTINGS);
- settingsIntent.setPackage(context.getPackageName());
+ Intent settingsIntent = createHighContrastTextSettingsIntent(context);
if (settingsIntent.resolveActivity(context.getPackageManager()) != null) {
- Bundle fragmentArgs = new Bundle();
- fragmentArgs.putString(EXTRA_FRAGMENT_ARG_KEY,
- TextReadingPreferenceFragment.HIGH_TEXT_CONTRAST_KEY);
- settingsIntent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, fragmentArgs);
PendingIntent settingsPendingIntent = PendingIntent.getActivity(context,
/* requestCode = */ 0, settingsIntent, PendingIntent.FLAG_IMMUTABLE);
+ Intent actionIntent = new Intent(context, HighContrastTextMigrationReceiver.class);
+ actionIntent.setAction(ACTION_OPEN_SETTINGS);
+ PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0,
+ actionIntent, PendingIntent.FLAG_IMMUTABLE);
Notification.Action settingsAction = new Notification.Action.Builder(
/* icon= */ null,
context.getString(
R.string.accessibility_notification_high_contrast_text_action),
- settingsPendingIntent
+ actionPendingIntent
).build();
notificationBuilder
@@ -156,4 +167,14 @@ public class HighContrastTextMigrationReceiver extends BroadcastReceiver {
notificationManager.createNotificationChannel(notificationChannel);
notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
}
+
+ private Intent createHighContrastTextSettingsIntent(Context context) {
+ Intent settingsIntent = new Intent(Settings.ACTION_TEXT_READING_SETTINGS);
+ settingsIntent.setPackage(context.getPackageName());
+ Bundle fragmentArgs = new Bundle();
+ fragmentArgs.putString(EXTRA_FRAGMENT_ARG_KEY,
+ TextReadingPreferenceFragment.HIGH_TEXT_CONTRAST_KEY);
+ settingsIntent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, fragmentArgs);
+ return settingsIntent;
+ }
}
diff --git a/src/com/android/settings/accessibility/TextReadingScreen.kt b/src/com/android/settings/accessibility/TextReadingScreen.kt
index 8970d5228db..02272786b6d 100644
--- a/src/com/android/settings/accessibility/TextReadingScreen.kt
+++ b/src/com/android/settings/accessibility/TextReadingScreen.kt
@@ -22,7 +22,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(TextReadingScreen.KEY)
class TextReadingScreen : PreferenceScreenCreator {
override val key: String
get() = KEY
@@ -36,7 +36,7 @@ class TextReadingScreen : PreferenceScreenCreator {
override fun hasCompleteHierarchy() = false
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
companion object {
const val KEY = "text_reading_screen"
diff --git a/src/com/android/settings/accessibility/VibrationIntensityScreen.kt b/src/com/android/settings/accessibility/VibrationIntensityScreen.kt
index 0a372308066..ce366dc1f0d 100644
--- a/src/com/android/settings/accessibility/VibrationIntensityScreen.kt
+++ b/src/com/android/settings/accessibility/VibrationIntensityScreen.kt
@@ -31,7 +31,7 @@ import com.android.settingslib.preference.PreferenceScreenCreator
// We might be able to consolidate this into VibrationScreen with PreferenceHierarchy choosing
// between toggle or slider preferences based on device config, depending on how overlays are done.
// LINT.IfChange
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(VibrationIntensityScreen.KEY)
class VibrationIntensityScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider {
override val key: String
get() = KEY
@@ -52,7 +52,7 @@ class VibrationIntensityScreen : PreferenceScreenCreator, PreferenceAvailability
override fun fragmentClass(): Class? =
VibrationIntensitySettingsFragment::class.java
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {
+VibrationMainSwitchPreference()
}
diff --git a/src/com/android/settings/accessibility/VibrationScreen.kt b/src/com/android/settings/accessibility/VibrationScreen.kt
index 63a7c4492a1..6e3e54f2951 100644
--- a/src/com/android/settings/accessibility/VibrationScreen.kt
+++ b/src/com/android/settings/accessibility/VibrationScreen.kt
@@ -29,7 +29,7 @@ import com.android.settingslib.preference.PreferenceScreenCreator
* Accessibility settings for vibration.
*/
// LINT.IfChange
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(VibrationScreen.KEY)
class VibrationScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider {
override val key: String
get() = KEY
@@ -49,7 +49,7 @@ class VibrationScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider
override fun fragmentClass(): Class? = VibrationSettings::class.java
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {
+VibrationMainSwitchPreference()
}
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
index d8a14f1e450..f649a40bb2c 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
@@ -27,7 +27,6 @@ import static com.android.settings.Utils.isPrivateProfile;
import static com.android.settings.biometrics.BiometricEnrollBase.BIOMETRIC_AUTH_REQUEST;
import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_FROM_SETTINGS_SUMMARY;
import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_KEY_CHALLENGE;
-import static com.android.settings.flags.Flags.screenOffUnlockPowerOptimization;
import android.app.Activity;
import android.app.Dialog;
@@ -603,11 +602,6 @@ public class FingerprintSettings extends SubSettings {
}
private boolean isUltrasnoicUdfps() {
- // b/368465560 Gate either ultrasonic or optical UDFPS if the power do not optimized
- if (!screenOffUnlockPowerOptimization()) {
- return false;
- }
-
mFingerprintManager = Utils.getFingerprintManagerOrNull(getActivity());
if (mFingerprintManager != null) {
mSensorProperties = mFingerprintManager.getSensorPropertiesInternal();
diff --git a/src/com/android/settings/connecteddevice/BluetoothDashboardScreen.kt b/src/com/android/settings/connecteddevice/BluetoothDashboardScreen.kt
index e6985cacaa9..f1f5bb54015 100644
--- a/src/com/android/settings/connecteddevice/BluetoothDashboardScreen.kt
+++ b/src/com/android/settings/connecteddevice/BluetoothDashboardScreen.kt
@@ -25,7 +25,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(BluetoothDashboardScreen.KEY)
class BluetoothDashboardScreen : PreferenceScreenCreator {
override val key: String
get() = KEY
@@ -46,7 +46,7 @@ class BluetoothDashboardScreen : PreferenceScreenCreator {
makeLaunchIntent(context, BluetoothDashboardActivity::class.java, metadata?.key)
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) {
+ preferenceHierarchy(context, this) {
val bluetoothDataStore = BluetoothPreference.createDataStore(context)
+BluetoothPreference(bluetoothDataStore)
+BluetoothFooterPreference(bluetoothDataStore)
diff --git a/src/com/android/settings/connecteddevice/BluetoothPreference.kt b/src/com/android/settings/connecteddevice/BluetoothPreference.kt
index 93b2f20a7a4..4d4853efbc5 100644
--- a/src/com/android/settings/connecteddevice/BluetoothPreference.kt
+++ b/src/com/android/settings/connecteddevice/BluetoothPreference.kt
@@ -16,6 +16,7 @@
package com.android.settings.connecteddevice
+import android.Manifest
import android.annotation.SuppressLint
import android.bluetooth.BluetoothAdapter
import android.content.BroadcastReceiver
@@ -35,6 +36,7 @@ import com.android.settingslib.WirelessUtils
import com.android.settingslib.datastore.AbstractKeyedDataObservable
import com.android.settingslib.datastore.DataChangeReason
import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.Permissions
import com.android.settingslib.metadata.PreferenceMetadata
import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel
@@ -52,6 +54,11 @@ class BluetoothPreference(private val bluetoothDataStore: BluetoothDataStore) :
override val restrictionKeys: Array
get() = arrayOf(UserManager.DISALLOW_BLUETOOTH, UserManager.DISALLOW_CONFIG_BLUETOOTH)
+ override fun getReadPermissions(context: Context) = Permissions.EMPTY
+
+ override fun getWritePermissions(context: Context) =
+ Permissions.allOf(Manifest.permission.BLUETOOTH_CONNECT)
+
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
diff --git a/src/com/android/settings/datausage/DataSaverMainSwitchPreference.kt b/src/com/android/settings/datausage/DataSaverMainSwitchPreference.kt
index 79d3dc39f63..a05bd8784cc 100644
--- a/src/com/android/settings/datausage/DataSaverMainSwitchPreference.kt
+++ b/src/com/android/settings/datausage/DataSaverMainSwitchPreference.kt
@@ -16,12 +16,14 @@
package com.android.settings.datausage
+import android.Manifest
import android.content.Context
import com.android.settings.R
import com.android.settings.widget.MainSwitchBarMetadata
import com.android.settingslib.datastore.AbstractKeyedDataObservable
import com.android.settingslib.datastore.DataChangeReason
import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.Permissions
import com.android.settingslib.metadata.PreferenceLifecycleProvider
import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel
@@ -36,6 +38,12 @@ class DataSaverMainSwitchPreference : MainSwitchBarMetadata, PreferenceLifecycle
override fun storage(context: Context) = createDataStore(context)
+ override fun getReadPermissions(context: Context) =
+ Permissions.allOf(Manifest.permission.MANAGE_NETWORK_POLICY)
+
+ override fun getWritePermissions(context: Context) =
+ Permissions.allOf(Manifest.permission.MANAGE_NETWORK_POLICY)
+
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
diff --git a/src/com/android/settings/datausage/DataSaverScreen.kt b/src/com/android/settings/datausage/DataSaverScreen.kt
index fd4441fbbe2..6974c93243f 100644
--- a/src/com/android/settings/datausage/DataSaverScreen.kt
+++ b/src/com/android/settings/datausage/DataSaverScreen.kt
@@ -20,6 +20,7 @@ import android.content.Context
import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID
import com.android.settings.R
import com.android.settings.Settings.DataSaverSummaryActivity
+import com.android.settings.datausage.DataSaverMainSwitchPreference.Companion.KEY as DATA_SAVER_KEY
import com.android.settings.flags.Flags
import com.android.settings.utils.makeLaunchIntent
import com.android.settingslib.datastore.HandlerExecutor
@@ -32,9 +33,8 @@ import com.android.settingslib.metadata.PreferenceSummaryProvider
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-import com.android.settings.datausage.DataSaverMainSwitchPreference.Companion.KEY as DATA_SAVER_KEY
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(DataSaverScreen.KEY)
class DataSaverScreen(context: Context) :
PreferenceScreenCreator,
PreferenceAvailabilityProvider,
@@ -75,7 +75,7 @@ class DataSaverScreen(context: Context) :
makeLaunchIntent(context, DataSaverSummaryActivity::class.java, metadata?.key)
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) { +DataSaverMainSwitchPreference() }
+ preferenceHierarchy(context, this) { +DataSaverMainSwitchPreference() }
override fun hasCompleteHierarchy() = false
diff --git a/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoScreen.kt b/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoScreen.kt
index 254a91e5ab3..4e9a45776c3 100644
--- a/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoScreen.kt
+++ b/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoScreen.kt
@@ -27,7 +27,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(MyDeviceInfoScreen.KEY)
class MyDeviceInfoScreen :
PreferenceScreenCreator, PreferenceSummaryProvider, PreferenceIconProvider {
override val key: String
@@ -52,7 +52,7 @@ class MyDeviceInfoScreen :
override fun fragmentClass() = MyDeviceInfoFragment::class.java
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
override fun hasCompleteHierarchy() = false
diff --git a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionScreen.kt b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionScreen.kt
index fbc749bb1ec..035f1cb899e 100644
--- a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionScreen.kt
+++ b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionScreen.kt
@@ -25,7 +25,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(FirmwareVersionScreen.KEY)
class FirmwareVersionScreen : PreferenceScreenCreator, PreferenceSummaryProvider {
override fun isFlagEnabled(context: Context) = Flags.catalystFirmwareVersion()
@@ -45,7 +45,7 @@ class FirmwareVersionScreen : PreferenceScreenCreator, PreferenceSummaryProvider
override fun fragmentClass() = FirmwareVersionSettings::class.java
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) {
+ preferenceHierarchy(context, this) {
+FirmwareVersionDetailPreference()
+SecurityPatchLevelPreference()
+MainlineModuleVersionPreference()
diff --git a/src/com/android/settings/deviceinfo/legal/LegalSettingsScreen.kt b/src/com/android/settings/deviceinfo/legal/LegalSettingsScreen.kt
index f990b5dbeb0..42bce16374d 100644
--- a/src/com/android/settings/deviceinfo/legal/LegalSettingsScreen.kt
+++ b/src/com/android/settings/deviceinfo/legal/LegalSettingsScreen.kt
@@ -23,7 +23,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(LegalSettingsScreen.KEY)
open class LegalSettingsScreen : PreferenceScreenCreator {
override val key: String
get() = KEY
@@ -36,7 +36,7 @@ open class LegalSettingsScreen : PreferenceScreenCreator {
override fun fragmentClass() = LegalSettings::class.java
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) {
+ preferenceHierarchy(context, this) {
+LegalPreference("copyright", R.string.copyright_title, "android.settings.COPYRIGHT")
+LegalPreference("license", R.string.license_title, "android.settings.LICENSE")
+LegalPreference("terms", R.string.terms_title, "android.settings.TERMS")
diff --git a/src/com/android/settings/deviceinfo/legal/ModuleLicensesScreen.kt b/src/com/android/settings/deviceinfo/legal/ModuleLicensesScreen.kt
index c7f5e9c05d6..9a180915258 100644
--- a/src/com/android/settings/deviceinfo/legal/ModuleLicensesScreen.kt
+++ b/src/com/android/settings/deviceinfo/legal/ModuleLicensesScreen.kt
@@ -23,7 +23,7 @@ import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
// LINT.IfChange
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(ModuleLicensesScreen.KEY)
class ModuleLicensesScreen : PreferenceScreenCreator, PreferenceAvailabilityProvider {
override val key: String
get() = KEY
@@ -39,7 +39,7 @@ class ModuleLicensesScreen : PreferenceScreenCreator, PreferenceAvailabilityProv
override fun fragmentClass() = ModuleLicensesDashboard::class.java
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
override fun isAvailable(context: Context): Boolean {
val modules = context.packageManager.getInstalledModules(/* flags= */ 0)
diff --git a/src/com/android/settings/display/AutoBrightnessScreen.kt b/src/com/android/settings/display/AutoBrightnessScreen.kt
index 945788aecde..ed9e078ffb6 100644
--- a/src/com/android/settings/display/AutoBrightnessScreen.kt
+++ b/src/com/android/settings/display/AutoBrightnessScreen.kt
@@ -40,7 +40,7 @@ import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenBinding
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(AutoBrightnessScreen.KEY)
class AutoBrightnessScreen :
PreferenceScreenCreator,
PreferenceScreenBinding,
@@ -60,7 +60,7 @@ class AutoBrightnessScreen :
override fun hasCompleteHierarchy() = false
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
override fun storage(context: Context): KeyValueStore =
AutoBrightnessDataStore(SettingsSystemStore.get(context))
diff --git a/src/com/android/settings/display/DisplayScreen.kt b/src/com/android/settings/display/DisplayScreen.kt
index d8a6be11e21..909e3004ba4 100644
--- a/src/com/android/settings/display/DisplayScreen.kt
+++ b/src/com/android/settings/display/DisplayScreen.kt
@@ -30,7 +30,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(DisplayScreen.KEY)
open class DisplayScreen :
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceIconProvider {
override val key: String
@@ -52,7 +52,7 @@ open class DisplayScreen :
override fun fragmentClass() = DisplaySettings::class.java
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) {
+ preferenceHierarchy(context, this) {
+BrightnessLevelPreference()
+AutoBrightnessScreen.KEY
+LockScreenPreferenceScreen.KEY
diff --git a/src/com/android/settings/display/ScreenTimeoutScreen.kt b/src/com/android/settings/display/ScreenTimeoutScreen.kt
index 9dcd1021621..de4d34747b1 100644
--- a/src/com/android/settings/display/ScreenTimeoutScreen.kt
+++ b/src/com/android/settings/display/ScreenTimeoutScreen.kt
@@ -27,7 +27,7 @@ import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
// TODO(b/368359967): The entry point logic is not yet migrated
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(ScreenTimeoutScreen.KEY)
class ScreenTimeoutScreen : PreferenceScreenCreator {
override val key: String
@@ -43,7 +43,7 @@ class ScreenTimeoutScreen : PreferenceScreenCreator {
override fun hasCompleteHierarchy() = false
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) { +AdaptiveSleepPreference() }
+ preferenceHierarchy(context, this) { +AdaptiveSleepPreference() }
override fun getLaunchIntent(context: Context, metadata: PreferenceMetadata?) =
makeLaunchIntent(context, ScreenTimeoutActivity::class.java, metadata?.key)
diff --git a/src/com/android/settings/display/darkmode/DarkModeScreen.kt b/src/com/android/settings/display/darkmode/DarkModeScreen.kt
index a768875ff00..963a641c4d3 100644
--- a/src/com/android/settings/display/darkmode/DarkModeScreen.kt
+++ b/src/com/android/settings/display/darkmode/DarkModeScreen.kt
@@ -37,7 +37,7 @@ import com.android.settingslib.preference.PreferenceScreenBinding
import com.android.settingslib.preference.PreferenceScreenCreator
// LINT.IfChange
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(DarkModeScreen.KEY)
class DarkModeScreen(context: Context) :
PreferenceScreenCreator,
PreferenceScreenBinding,
@@ -80,7 +80,7 @@ class DarkModeScreen(context: Context) :
override fun hasCompleteHierarchy() = false
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
override fun storage(context: Context): KeyValueStore = darkModeStorage
@@ -89,8 +89,8 @@ class DarkModeScreen(context: Context) :
override fun bind(preference: Preference, metadata: PreferenceMetadata) {
super.bind(preference, metadata)
if (preference is DarkModePreference) preference.setCatalystEnabled(true)
- (preference as PrimarySwitchPreference).apply {
- isSwitchEnabled = isEnabled()
+ (preference as? PrimarySwitchPreference)?.apply {
+ isSwitchEnabled = isEnabled
isChecked = darkModeStorage.getBoolean(KEY) == true
}
}
diff --git a/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java b/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java
index b0d0af1eefb..e05ae71a05a 100644
--- a/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java
+++ b/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java
@@ -109,9 +109,12 @@ public class ActionDisabledByAdminDialog extends Activity
}
if (enforcingAdmin.getAuthority() instanceof UnknownAuthority authority
&& ADVANCED_PROTECTION_SYSTEM_ENTITY.equals(authority.getName())) {
- Intent apmSupportIntent = AdvancedProtectionManager
- .createSupportIntentForPolicyIdentifierOrRestriction(restriction,
- AdvancedProtectionManager.SUPPORT_DIALOG_TYPE_UNKNOWN);
+ AdvancedProtectionManager apm = getSystemService(AdvancedProtectionManager.class);
+ if (apm == null) {
+ return;
+ }
+ Intent apmSupportIntent = apm.createSupportIntentForPolicyIdentifierOrRestriction(
+ restriction, /* type */ null);
startActivityAsUser(apmSupportIntent, UserHandle.of(userId));
finish();
} else {
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScreen.kt b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScreen.kt
index d0220736612..11a76e50506 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScreen.kt
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScreen.kt
@@ -22,7 +22,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(BatterySaverScreen.KEY)
open class BatterySaverScreen : PreferenceScreenCreator {
override val key: String
get() = KEY
@@ -40,7 +40,7 @@ open class BatterySaverScreen : PreferenceScreenCreator {
override fun hasCompleteHierarchy() = false
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) { +BatterySaverPreference() order -100 }
+ preferenceHierarchy(context, this) { +BatterySaverPreference() order -100 }
companion object {
const val KEY = "battery_saver_screen"
diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryScreen.kt b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryScreen.kt
index 9ff46b92663..7dc7a773f9f 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryScreen.kt
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryScreen.kt
@@ -26,7 +26,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(PowerUsageSummaryScreen.KEY)
class PowerUsageSummaryScreen :
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceIconProvider {
override val key: String
@@ -54,10 +54,11 @@ class PowerUsageSummaryScreen :
R.drawable.ic_settings_battery_white
}
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
- +BatteryHeaderPreference()
- +BatteryPercentageSwitchPreference()
- }
+ override fun getPreferenceHierarchy(context: Context) =
+ preferenceHierarchy(context, this) {
+ +BatteryHeaderPreference()
+ +BatteryPercentageSwitchPreference()
+ }
companion object {
const val KEY = "power_usage_summary_screen"
diff --git a/src/com/android/settings/language/LanguageSettingScreen.kt b/src/com/android/settings/language/LanguageSettingScreen.kt
index 09ca11be979..c2b39b779d4 100644
--- a/src/com/android/settings/language/LanguageSettingScreen.kt
+++ b/src/com/android/settings/language/LanguageSettingScreen.kt
@@ -15,19 +15,15 @@
*/
package com.android.settings.language
-import android.content.ComponentName
import android.content.Context
-import android.content.pm.PackageManager
import com.android.settings.R
-import com.android.settings.Settings.LanguageSettingsActivity
import com.android.settings.flags.Flags
-import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
-class LanguageSettingScreen: PreferenceScreenCreator {
+@ProvidePreferenceScreen(LanguageSettingScreen.KEY)
+class LanguageSettingScreen : PreferenceScreenCreator {
override val key: String
get() = KEY
@@ -46,7 +42,7 @@ class LanguageSettingScreen: PreferenceScreenCreator {
override fun fragmentClass() = LanguageSettings::class.java
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
companion object {
const val KEY = "language_setting"
diff --git a/src/com/android/settings/location/LocationScreen.kt b/src/com/android/settings/location/LocationScreen.kt
index d45b762d102..1aed27a0314 100644
--- a/src/com/android/settings/location/LocationScreen.kt
+++ b/src/com/android/settings/location/LocationScreen.kt
@@ -25,7 +25,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(LocationScreen.KEY)
class LocationScreen : PreferenceScreenCreator, PreferenceSummaryProvider, PreferenceIconProvider {
override val key: String
get() = KEY
@@ -57,7 +57,7 @@ class LocationScreen : PreferenceScreenCreator, PreferenceSummaryProvider, Prefe
override fun fragmentClass() = LocationSettings::class.java
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {}
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {}
companion object {
const val KEY = "location_settings"
diff --git a/src/com/android/settings/network/AdaptiveConnectivityScreen.kt b/src/com/android/settings/network/AdaptiveConnectivityScreen.kt
index 0604236173f..829ec8dc534 100644
--- a/src/com/android/settings/network/AdaptiveConnectivityScreen.kt
+++ b/src/com/android/settings/network/AdaptiveConnectivityScreen.kt
@@ -23,7 +23,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(AdaptiveConnectivityScreen.KEY)
class AdaptiveConnectivityScreen : PreferenceScreenCreator {
override val key
get() = KEY
@@ -35,7 +35,7 @@ class AdaptiveConnectivityScreen : PreferenceScreenCreator {
override fun fragmentClass() = AdaptiveConnectivitySettings::class.java
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {
+AdaptiveConnectivityTogglePreference()
}
diff --git a/src/com/android/settings/network/AdaptiveConnectivityTogglePreference.kt b/src/com/android/settings/network/AdaptiveConnectivityTogglePreference.kt
index 77a141eb736..ec5061ee0fa 100644
--- a/src/com/android/settings/network/AdaptiveConnectivityTogglePreference.kt
+++ b/src/com/android/settings/network/AdaptiveConnectivityTogglePreference.kt
@@ -16,6 +16,7 @@
package com.android.settings.network
+import android.Manifest
import android.content.Context
import android.net.wifi.WifiManager
import android.provider.Settings.Secure.ADAPTIVE_CONNECTIVITY_ENABLED
@@ -24,6 +25,7 @@ import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate
import com.android.settingslib.datastore.SettingsSecureStore
import com.android.settingslib.datastore.SettingsStore
+import com.android.settingslib.datastore.and
import com.android.settingslib.metadata.MainSwitchPreference
import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel
@@ -35,6 +37,11 @@ class AdaptiveConnectivityTogglePreference :
override fun storage(context: Context): KeyValueStore =
AdaptiveConnectivityToggleStorage(context, SettingsSecureStore.get(context))
+ override fun getReadPermissions(context: Context) = SettingsSecureStore.getReadPermissions()
+
+ override fun getWritePermissions(context: Context) =
+ SettingsSecureStore.getWritePermissions() and Manifest.permission.NETWORK_SETTINGS
+
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
diff --git a/src/com/android/settings/network/AirplaneModePreference.kt b/src/com/android/settings/network/AirplaneModePreference.kt
index c9377eb07ea..f86d41a9e60 100644
--- a/src/com/android/settings/network/AirplaneModePreference.kt
+++ b/src/com/android/settings/network/AirplaneModePreference.kt
@@ -65,6 +65,10 @@ class AirplaneModePreference :
override val restrictionKeys
get() = arrayOf(UserManager.DISALLOW_AIRPLANE_MODE)
+ override fun getReadPermissions(context: Context) = SettingsGlobalStore.getReadPermissions()
+
+ override fun getWritePermissions(context: Context) = SettingsGlobalStore.getWritePermissions()
+
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
diff --git a/src/com/android/settings/network/MobileNetworkListScreen.kt b/src/com/android/settings/network/MobileNetworkListScreen.kt
index d7231ccb711..592260b151d 100644
--- a/src/com/android/settings/network/MobileNetworkListScreen.kt
+++ b/src/com/android/settings/network/MobileNetworkListScreen.kt
@@ -46,7 +46,7 @@ import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenBinding
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(MobileNetworkListScreen.KEY)
class MobileNetworkListScreen :
PreferenceScreenCreator,
PreferenceScreenBinding,
@@ -160,7 +160,7 @@ class MobileNetworkListScreen :
override fun fragmentClass() = MobileNetworkListFragment::class.java
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) { +MobileDataPreference() }
+ preferenceHierarchy(context, this) { +MobileDataPreference() }
companion object {
const val KEY = "mobile_network_list"
diff --git a/src/com/android/settings/network/NetworkDashboardScreen.kt b/src/com/android/settings/network/NetworkDashboardScreen.kt
index 1ed88c080d1..b80c4a124ed 100644
--- a/src/com/android/settings/network/NetworkDashboardScreen.kt
+++ b/src/com/android/settings/network/NetworkDashboardScreen.kt
@@ -27,7 +27,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(NetworkDashboardScreen.KEY)
class NetworkDashboardScreen : PreferenceScreenCreator, PreferenceIconProvider {
override val key: String
get() = KEY
@@ -51,7 +51,7 @@ class NetworkDashboardScreen : PreferenceScreenCreator, PreferenceIconProvider {
makeLaunchIntent(context, NetworkDashboardActivity::class.java, metadata?.key)
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) {
+ preferenceHierarchy(context, this) {
+MobileNetworkListScreen.KEY order -15
+AirplaneModePreference() order -5
+DataSaverScreen.KEY order 10
diff --git a/src/com/android/settings/network/NetworkProviderScreen.kt b/src/com/android/settings/network/NetworkProviderScreen.kt
index 766ec0c6a51..198eeec1db7 100644
--- a/src/com/android/settings/network/NetworkProviderScreen.kt
+++ b/src/com/android/settings/network/NetworkProviderScreen.kt
@@ -26,7 +26,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(NetworkProviderScreen.KEY)
class NetworkProviderScreen :
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceRestrictionMixin {
override val key: String
@@ -55,7 +55,7 @@ class NetworkProviderScreen :
override fun fragmentClass() = NetworkProviderSettings::class.java
- override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) {
+ override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) {
+WifiSwitchPreference()
}
diff --git a/src/com/android/settings/network/tether/TetherScreen.kt b/src/com/android/settings/network/tether/TetherScreen.kt
index 5865c861f58..cd8851326fe 100644
--- a/src/com/android/settings/network/tether/TetherScreen.kt
+++ b/src/com/android/settings/network/tether/TetherScreen.kt
@@ -35,7 +35,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(TetherScreen.KEY)
class TetherScreen :
PreferenceScreenCreator,
PreferenceTitleProvider,
@@ -76,7 +76,7 @@ class TetherScreen :
makeLaunchIntent(context, TetherSettingsActivity::class.java, metadata?.key)
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) {
+ preferenceHierarchy(context, this) {
val dataSaverStore = DataSaverMainSwitchPreference.createDataStore(context)
+WifiHotspotSwitchPreference(context, dataSaverStore)
}
diff --git a/src/com/android/settings/notification/CallVolumePreference.kt b/src/com/android/settings/notification/CallVolumePreference.kt
index 0e45b236248..3caac242316 100644
--- a/src/com/android/settings/notification/CallVolumePreference.kt
+++ b/src/com/android/settings/notification/CallVolumePreference.kt
@@ -16,7 +16,11 @@
package com.android.settings.notification
+import android.Manifest.permission.MODIFY_AUDIO_SETTINGS
+import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED
+import android.Manifest.permission.MODIFY_PHONE_STATE
import android.content.Context
+import android.content.pm.PackageManager.FEATURE_AUTOMOTIVE
import android.media.AudioManager
import android.media.AudioManager.STREAM_BLUETOOTH_SCO
import android.media.AudioManager.STREAM_VOICE_CALL
@@ -26,6 +30,8 @@ import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R
import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.NoOpKeyedObservable
+import com.android.settingslib.datastore.Permissions
+import com.android.settingslib.datastore.and
import com.android.settingslib.metadata.PersistentPreference
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceIconProvider
@@ -76,9 +82,19 @@ open class CallVolumePreference :
}
}
+ override fun getReadPermissions(context: Context) = Permissions.EMPTY
+
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
+ override fun getWritePermissions(context: Context): Permissions? {
+ var permissions = Permissions.allOf(MODIFY_AUDIO_SETTINGS, MODIFY_PHONE_STATE)
+ if (context.packageManager.hasSystemFeature(FEATURE_AUTOMOTIVE)) {
+ permissions = permissions and MODIFY_AUDIO_SETTINGS_PRIVILEGED
+ }
+ return permissions
+ }
+
override fun getWritePermit(context: Context, value: Int?, callingPid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
diff --git a/src/com/android/settings/notification/MediaVolumePreference.kt b/src/com/android/settings/notification/MediaVolumePreference.kt
index b644381b8a0..02bf82479c0 100644
--- a/src/com/android/settings/notification/MediaVolumePreference.kt
+++ b/src/com/android/settings/notification/MediaVolumePreference.kt
@@ -16,7 +16,10 @@
package com.android.settings.notification
+import android.Manifest.permission.MODIFY_AUDIO_SETTINGS
+import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED
import android.content.Context
+import android.content.pm.PackageManager.FEATURE_AUTOMOTIVE
import android.media.AudioManager.STREAM_MUSIC
import android.os.UserManager
import androidx.preference.Preference
@@ -24,6 +27,8 @@ import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R
import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.NoOpKeyedObservable
+import com.android.settingslib.datastore.Permissions
+import com.android.settingslib.datastore.and
import com.android.settingslib.metadata.PersistentPreference
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceIconProvider
@@ -77,9 +82,19 @@ open class MediaVolumePreference :
}
}
+ override fun getReadPermissions(context: Context) = Permissions.EMPTY
+
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
+ override fun getWritePermissions(context: Context): Permissions? {
+ var permissions = Permissions.allOf(MODIFY_AUDIO_SETTINGS)
+ if (context.packageManager.hasSystemFeature(FEATURE_AUTOMOTIVE)) {
+ permissions = permissions and MODIFY_AUDIO_SETTINGS_PRIVILEGED
+ }
+ return permissions
+ }
+
override fun getWritePermit(context: Context, value: Int?, callingPid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
diff --git a/src/com/android/settings/notification/SeparateRingVolumePreference.kt b/src/com/android/settings/notification/SeparateRingVolumePreference.kt
index 0e557c419a1..4cdac1434bf 100644
--- a/src/com/android/settings/notification/SeparateRingVolumePreference.kt
+++ b/src/com/android/settings/notification/SeparateRingVolumePreference.kt
@@ -16,6 +16,8 @@
package com.android.settings.notification
+import android.Manifest.permission.MODIFY_AUDIO_SETTINGS
+import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED
import android.app.INotificationManager
import android.app.NotificationManager
import android.app.NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED
@@ -24,6 +26,7 @@ import android.content.Context
import android.content.Context.NOTIFICATION_SERVICE
import android.content.Intent
import android.content.IntentFilter
+import android.content.pm.PackageManager.FEATURE_AUTOMOTIVE
import android.media.AudioManager
import android.media.AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION
import android.media.AudioManager.RINGER_MODE_NORMAL
@@ -40,6 +43,8 @@ import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R
import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.NoOpKeyedObservable
+import com.android.settingslib.datastore.Permissions
+import com.android.settingslib.datastore.and
import com.android.settingslib.metadata.PersistentPreference
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceIconProvider
@@ -94,9 +99,19 @@ open class SeparateRingVolumePreference :
}
}
+ override fun getReadPermissions(context: Context) = Permissions.EMPTY
+
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
+ override fun getWritePermissions(context: Context): Permissions? {
+ var permissions = Permissions.allOf(MODIFY_AUDIO_SETTINGS)
+ if (context.packageManager.hasSystemFeature(FEATURE_AUTOMOTIVE)) {
+ permissions = permissions and MODIFY_AUDIO_SETTINGS_PRIVILEGED
+ }
+ return permissions
+ }
+
override fun getWritePermit(context: Context, value: Int?, callingPid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
diff --git a/src/com/android/settings/notification/SoundScreen.kt b/src/com/android/settings/notification/SoundScreen.kt
index c0694b9a7ca..44034cc7dd8 100644
--- a/src/com/android/settings/notification/SoundScreen.kt
+++ b/src/com/android/settings/notification/SoundScreen.kt
@@ -27,7 +27,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(SoundScreen.KEY)
class SoundScreen : PreferenceScreenCreator, PreferenceIconProvider {
override val key: String
get() = KEY
@@ -51,7 +51,7 @@ class SoundScreen : PreferenceScreenCreator, PreferenceIconProvider {
override fun fragmentClass(): Class? = SoundSettings::class.java
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) {
+ preferenceHierarchy(context, this) {
+MediaVolumePreference() order -180
+CallVolumePreference() order -170
+SeparateRingVolumePreference() order -155
diff --git a/src/com/android/settings/security/ActionDisabledByAdvancedProtectionDialog.kt b/src/com/android/settings/security/ActionDisabledByAdvancedProtectionDialog.kt
deleted file mode 100644
index d56f8958ac3..00000000000
--- a/src/com/android/settings/security/ActionDisabledByAdvancedProtectionDialog.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.security;
-
-import android.app.Activity
-import android.content.DialogInterface
-import android.os.Bundle
-import android.view.View
-import android.view.ViewGroup
-import android.widget.TextView
-import com.android.settings.R
-
-import androidx.appcompat.app.AlertDialog;
-
-class ActionDisabledByAdvancedProtectionDialog : Activity(), DialogInterface.OnDismissListener {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- val dialogView = layoutInflater.inflate(R.layout.support_details_dialog, null) as ViewGroup
- val builder = AlertDialog.Builder(this)
- .setPositiveButton(R.string.okay, null)
- .setView(dialogView)
- .setOnDismissListener(this)
- initializeDialogView(dialogView)
- builder.show()
- }
-
- override fun onDismiss(dialog: DialogInterface) {
- finish()
- }
-
- private fun initializeDialogView(dialogView: View) {
- setSupportTitle(dialogView)
- setSupportDetails(dialogView)
- }
-
- private fun setSupportTitle(root: View) {
- val titleView: TextView = root.findViewById(R.id.admin_support_dialog_title) ?: return
- titleView.setText(R.string.disabled_by_advanced_protection_title)
- }
-
- private fun setSupportDetails(root: View) {
- val textView: TextView = root.findViewById(R.id.admin_support_msg)
- textView.setText(R.string.disabled_by_advanced_protection_message)
- }
-}
diff --git a/src/com/android/settings/security/LockScreenPreferenceScreen.kt b/src/com/android/settings/security/LockScreenPreferenceScreen.kt
index 3c00b428ebd..9a3226abe1a 100644
--- a/src/com/android/settings/security/LockScreenPreferenceScreen.kt
+++ b/src/com/android/settings/security/LockScreenPreferenceScreen.kt
@@ -28,7 +28,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(LockScreenPreferenceScreen.KEY)
open class LockScreenPreferenceScreen : PreferenceScreenCreator, PreferenceSummaryProvider {
override val key: String
get() = KEY
@@ -52,7 +52,7 @@ open class LockScreenPreferenceScreen : PreferenceScreenCreator, PreferenceSumma
makeLaunchIntent(context, LockScreenSettingsActivity::class.java, metadata?.key)
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) {
+ preferenceHierarchy(context, this) {
+AmbientDisplayAlwaysOnPreference()
}
diff --git a/src/com/android/settings/wifi/WepNetworksPreferenceController.kt b/src/com/android/settings/wifi/WepNetworksPreferenceController.kt
index 59c67eef9ff..92716bec4ff 100644
--- a/src/com/android/settings/wifi/WepNetworksPreferenceController.kt
+++ b/src/com/android/settings/wifi/WepNetworksPreferenceController.kt
@@ -162,10 +162,10 @@ class WepNetworksPreferenceController(context: Context, preferenceKey: String) :
emit(aapmManager?.isAdvancedProtectionEnabled ?: false) }.flowOn(Dispatchers.Default)
private fun startSupportIntent() {
- AdvancedProtectionManager.createSupportIntent(
+ aapmManager?.createSupportIntent(
AdvancedProtectionManager.FEATURE_ID_DISALLOW_WEP,
AdvancedProtectionManager.SUPPORT_DIALOG_TYPE_DISABLED_SETTING
- ).let { mContext.startActivity(it) }
+ )?.let { mContext.startActivity(it) }
}
val wepAllowedFlow =
diff --git a/src/com/android/settings/wifi/WifiSwitchPreference.kt b/src/com/android/settings/wifi/WifiSwitchPreference.kt
index 0eef999ff8e..627a78b7e2c 100644
--- a/src/com/android/settings/wifi/WifiSwitchPreference.kt
+++ b/src/com/android/settings/wifi/WifiSwitchPreference.kt
@@ -16,6 +16,7 @@
package com.android.settings.wifi
+import android.Manifest
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
@@ -37,6 +38,7 @@ import com.android.settingslib.WirelessUtils
import com.android.settingslib.datastore.AbstractKeyedDataObservable
import com.android.settingslib.datastore.DataChangeReason
import com.android.settingslib.datastore.KeyValueStore
+import com.android.settingslib.datastore.Permissions
import com.android.settingslib.metadata.PreferenceLifecycleProvider
import com.android.settingslib.metadata.PreferenceMetadata
import com.android.settingslib.metadata.ReadWritePermit
@@ -94,6 +96,15 @@ class WifiSwitchPreference :
return true
}
+ override fun getReadPermissions(context: Context) =
+ Permissions.allOf(Manifest.permission.ACCESS_WIFI_STATE)
+
+ override fun getWritePermissions(context: Context) =
+ Permissions.anyOf(
+ Manifest.permission.NETWORK_SETTINGS,
+ Manifest.permission.CHANGE_WIFI_STATE,
+ )
+
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
diff --git a/src/com/android/settings/wifi/calling/WifiCallingMainSwitchPreference.kt b/src/com/android/settings/wifi/calling/WifiCallingMainSwitchPreference.kt
index 07adac04f58..dc6737310d3 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingMainSwitchPreference.kt
+++ b/src/com/android/settings/wifi/calling/WifiCallingMainSwitchPreference.kt
@@ -16,6 +16,9 @@
package com.android.settings.wifi.calling
+import android.Manifest.permission.MODIFY_PHONE_STATE
+import android.Manifest.permission.READ_PRECISE_PHONE_STATE
+import android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE
import android.content.Context
import android.telephony.SubscriptionManager
import android.telephony.TelephonyManager
@@ -28,6 +31,8 @@ import com.android.settings.widget.SettingsMainSwitchPreference
import com.android.settings.wifi.calling.WifiCallingSettingsForSub.getCarrierActivityIntent
import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.NoOpKeyedObservable
+import com.android.settingslib.datastore.Permissions
+import com.android.settingslib.datastore.and
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel
@@ -60,9 +65,16 @@ class WifiCallingMainSwitchPreference(private val subId: Int) :
override fun createWidget(context: Context) = SettingsMainSwitchPreference(context)
+ override fun getReadPermissions(context: Context) =
+ Permissions.anyOf(READ_PRIVILEGED_PHONE_STATE, READ_PRECISE_PHONE_STATE)
+
override fun getReadPermit(context: Context, callingPid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
+ override fun getWritePermissions(context: Context) =
+ Permissions.anyOf(READ_PRIVILEGED_PHONE_STATE, READ_PRECISE_PHONE_STATE) and
+ MODIFY_PHONE_STATE
+
override fun getWritePermit(
context: Context,
value: Boolean?,
diff --git a/src/com/android/settings/wifi/calling/WifiCallingScreen.kt b/src/com/android/settings/wifi/calling/WifiCallingScreen.kt
index 6ab5e564f06..5eeed054ded 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingScreen.kt
+++ b/src/com/android/settings/wifi/calling/WifiCallingScreen.kt
@@ -23,7 +23,7 @@ import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
-@ProvidePreferenceScreen
+@ProvidePreferenceScreen(WifiCallingScreen.KEY)
class WifiCallingScreen : PreferenceScreenCreator {
override val key: String
get() = KEY
@@ -41,7 +41,7 @@ class WifiCallingScreen : PreferenceScreenCreator {
override fun hasCompleteHierarchy() = false
override fun getPreferenceHierarchy(context: Context) =
- preferenceHierarchy(this) {
+ preferenceHierarchy(context, this) {
val subId = SubscriptionManager.getDefaultSubscriptionId()
if (SubscriptionManager.isValidSubscriptionId(subId)) {
+WifiCallingMainSwitchPreference(subId)
diff --git a/tests/robotests/src/com/android/settings/accessibility/HighContrastTextMigrationReceiverTest.java b/tests/robotests/src/com/android/settings/accessibility/HighContrastTextMigrationReceiverTest.java
index 1b663936fcb..b0864aa1073 100644
--- a/tests/robotests/src/com/android/settings/accessibility/HighContrastTextMigrationReceiverTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/HighContrastTextMigrationReceiverTest.java
@@ -20,6 +20,7 @@ import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENT
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.ACTION_RESTORED;
+import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.ACTION_OPEN_SETTINGS;
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.NOTIFICATION_CHANNEL;
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.NOTIFICATION_ID;
import static com.android.settings.accessibility.HighContrastTextMigrationReceiver.PromptState.PROMPT_SHOWN;
@@ -28,9 +29,9 @@ import static com.android.settings.accessibility.HighContrastTextMigrationReceiv
import static com.google.common.truth.Truth.assertThat;
+import android.app.Application;
import android.app.Notification;
import android.app.NotificationManager;
-import android.app.PendingIntent;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -54,10 +55,13 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.Shadows;
+import org.robolectric.shadows.ShadowApplication;
import org.robolectric.shadows.ShadowNotification;
import org.robolectric.shadows.ShadowNotificationManager;
import org.robolectric.shadows.ShadowPackageManager;
+import java.util.List;
+
/** Tests for {@link HighContrastTextMigrationReceiver}. */
@RunWith(RobolectricTestRunner.class)
public class HighContrastTextMigrationReceiverTest {
@@ -66,6 +70,7 @@ public class HighContrastTextMigrationReceiverTest {
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
private final Context mContext = ApplicationProvider.getApplicationContext();
private HighContrastTextMigrationReceiver mReceiver;
+ private ShadowApplication mShadowApplication;
private ShadowNotificationManager mShadowNotificationManager;
@Before
@@ -73,6 +78,7 @@ public class HighContrastTextMigrationReceiverTest {
NotificationManager notificationManager =
mContext.getSystemService(NotificationManager.class);
mShadowNotificationManager = Shadows.shadowOf(notificationManager);
+ mShadowApplication = Shadows.shadowOf((Application) mContext);
// Setup Settings app as a system app
ShadowPackageManager shadowPm = Shadows.shadowOf(mContext.getPackageManager());
@@ -187,6 +193,28 @@ public class HighContrastTextMigrationReceiverTest {
verifyNotificationNotSent();
}
+ @Test
+ @EnableFlags(Flags.FLAG_HIGH_CONTRAST_TEXT_SMALL_TEXT_RECT)
+ public void onReceive_openSettingsIntent_openHighContrastTextPreference() {
+ Intent intent = new Intent(ACTION_OPEN_SETTINGS);
+ mReceiver.onReceive(mContext, intent);
+
+ List broadcastIntents = mShadowApplication.getBroadcastIntents();
+ assertThat(broadcastIntents.size()).isEqualTo(1);
+ assertThat(broadcastIntents.get(0).getAction())
+ .isEqualTo(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
+
+ Intent startedActivitie = mShadowApplication.getNextStartedActivity();
+ assertThat(startedActivitie).isNotNull();
+ Bundle fragmentArgs = startedActivitie.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
+ assertThat(fragmentArgs).isNotNull();
+ assertThat(fragmentArgs.getString(EXTRA_FRAGMENT_ARG_KEY))
+ .isEqualTo(TextReadingPreferenceFragment.HIGH_TEXT_CONTRAST_KEY);
+
+ Notification notification = mShadowNotificationManager.getNotification(NOTIFICATION_ID);
+ assertThat(notification).isNull();
+ }
+
private void verifyNotificationNotSent() {
Notification notification = mShadowNotificationManager.getNotification(NOTIFICATION_ID);
assertThat(notification).isNull();
@@ -210,13 +238,6 @@ public class HighContrastTextMigrationReceiverTest {
assertThat(notification.actions.length).isEqualTo(1);
assertThat(notification.actions[0].title.toString()).isEqualTo(
mContext.getString(R.string.accessibility_notification_high_contrast_text_action));
-
- PendingIntent pendingIntent = notification.actions[0].actionIntent;
- Intent settingsIntent = Shadows.shadowOf(pendingIntent).getSavedIntent();
- Bundle fragmentArgs = settingsIntent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
- assertThat(fragmentArgs).isNotNull();
- assertThat(fragmentArgs.getString(EXTRA_FRAGMENT_ARG_KEY))
- .isEqualTo(TextReadingPreferenceFragment.HIGH_TEXT_CONTRAST_KEY);
}
private void assertPromptStateAndHctState(
diff --git a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogTest.java b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogTest.java
index 37e04247f89..4b7abec906a 100644
--- a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogTest.java
@@ -20,14 +20,9 @@ import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.security.advancedprotection.AdvancedProtectionManager.ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG;
import static android.security.advancedprotection.AdvancedProtectionManager.ADVANCED_PROTECTION_SYSTEM_ENTITY;
import static android.security.advancedprotection.AdvancedProtectionManager.EXTRA_SUPPORT_DIALOG_FEATURE;
-import static android.security.advancedprotection.AdvancedProtectionManager.EXTRA_SUPPORT_DIALOG_TYPE;
-import static android.security.advancedprotection.AdvancedProtectionManager.FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES;
-import static android.security.advancedprotection.AdvancedProtectionManager.SUPPORT_DIALOG_TYPE_UNKNOWN;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
@@ -45,6 +40,7 @@ import android.os.UserManager;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
+import android.security.advancedprotection.AdvancedProtectionManager;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -52,7 +48,6 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
@@ -64,6 +59,8 @@ public class ActionDisabledByAdminDialogTest {
@Mock
private DevicePolicyManager mDevicePolicyManager;
+ @Mock
+ private AdvancedProtectionManager mAdvancedProtectionManager;
private ActionDisabledByAdminDialog mDialog;
private final ComponentName mAdminComponent = new ComponentName("admin", "adminclass");
@@ -73,6 +70,8 @@ public class ActionDisabledByAdminDialogTest {
MockitoAnnotations.initMocks(this);
mDialog = spy(new ActionDisabledByAdminDialog());
doReturn(mDevicePolicyManager).when(mDialog).getSystemService(DevicePolicyManager.class);
+ doReturn(mAdvancedProtectionManager).when(mDialog).getSystemService(
+ AdvancedProtectionManager.class);
}
@Test
@@ -119,28 +118,24 @@ public class ActionDisabledByAdminDialogTest {
advancedProtectionAuthority, UserHandle.of(userId), mAdminComponent);
final String userRestriction = UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY;
+ final Intent apmIntent = new Intent(ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG);
+ apmIntent.setFlags(FLAG_ACTIVITY_NEW_TASK);
+ apmIntent.putExtra(EXTRA_SUPPORT_DIALOG_FEATURE, "featureId");
+
final Intent dialogIntent = new Intent();
dialogIntent.putExtra(Intent.EXTRA_USER_ID, userId);
dialogIntent.putExtra(DevicePolicyManager.EXTRA_RESTRICTION, userRestriction);
when(mDevicePolicyManager.getEnforcingAdmin(userId, userRestriction))
.thenReturn(advancedProtectionEnforcingAdmin);
- doNothing().when(mDialog).startActivityAsUser(any(), eq(UserHandle.of(userId)));
+ when(mAdvancedProtectionManager.createSupportIntentForPolicyIdentifierOrRestriction(
+ userRestriction, /* type */ null)).thenReturn(apmIntent);
+ doNothing().when(mDialog).startActivityAsUser(apmIntent, UserHandle.of(userId));
mDialog.getAdminDetailsFromIntent(dialogIntent);
- ArgumentCaptor intentCaptor = ArgumentCaptor.forClass(Intent.class);
- verify(mDialog).startActivityAsUser(intentCaptor.capture(), eq(UserHandle.of(userId)));
+ verify(mDialog).startActivityAsUser(apmIntent, UserHandle.of(userId));
assertTrue(mDialog.isFinishing());
-
- Intent launchedIntent = intentCaptor.getValue();
- assertEquals("Intent action is incorrect", ACTION_SHOW_ADVANCED_PROTECTION_SUPPORT_DIALOG,
- launchedIntent.getAction());
- assertEquals("Feature ID extra is incorrect", FEATURE_ID_DISALLOW_INSTALL_UNKNOWN_SOURCES,
- launchedIntent.getIntExtra(EXTRA_SUPPORT_DIALOG_FEATURE, -1));
- assertEquals("Type is incorrect", SUPPORT_DIALOG_TYPE_UNKNOWN,
- launchedIntent.getIntExtra(EXTRA_SUPPORT_DIALOG_TYPE, -1));
- assertEquals(FLAG_ACTIVITY_NEW_TASK, launchedIntent.getFlags());
}
@RequiresFlagsEnabled(android.security.Flags.FLAG_AAPM_API)
diff --git a/tests/spa_unit/src/com/android/settings/wifi/WepNetworksPreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/wifi/WepNetworksPreferenceControllerTest.kt
index 74107571b0d..1f0a4916310 100644
--- a/tests/spa_unit/src/com/android/settings/wifi/WepNetworksPreferenceControllerTest.kt
+++ b/tests/spa_unit/src/com/android/settings/wifi/WepNetworksPreferenceControllerTest.kt
@@ -200,6 +200,7 @@ class WepNetworksPreferenceControllerTest {
fun whenClick_aapmEnabled_openDialog() {
mockAapmManager.stub {
on { isAdvancedProtectionEnabled } doReturn true
+ on { createSupportIntent(any(), any()) } doReturn Intent()
}
doNothing().whenever(context).startActivity(any())
composeTestRule.setContent { controller.Content() }