# Print output for @column tags ?>
targetSdkVersion of greater than or equal to
30.
Starting in Build.VERSION_CODES.R, there is a new public API overload onChange(boolean, Uri, int) that delivers a int flags argument.
Some apps may be relying on a previous hidden API that delivered a int userId argument, and this change is used to control delivery of the new int flags argument in its place.
targetSdkVersion of greater than or equal to
30.
For admin apps targeting R+, throw when the app sets password requirement that is not taken into account at given quality. For example when quality is set to DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, it doesn't make sense to require certain password length. If the intent is to require a password of certain length having at least NUMERIC quality, the admin should first call DevicePolicyManager.setPasswordQuality(ComponentName, int) and only then call DevicePolicyManager.setPasswordMinimumLength(ComponentName, int).
Conversely when an admin app targeting R+ lowers password quality, those requirements that stop making sense are reset to default values.
Allow apps accessing @TestApi APIs.
This will always be disabled by default and should only be used by platform test code.
This change id forces the packages it is applied to always have Display API sandboxing applied, regardless of windowing mode. The Display APIs will always provide the app bounds.
targetSdkVersion of greater than or equal to
30.
Compat framework change ID for the APN db read permission change. In API level 30 and beyond, accessing the APN database will require the Manifest.permission.WRITE_APN_SETTINGS permission. This change ID tracks apps that are affected because they don't hold this permission.
targetSdkVersion of greater than or equal to
30.
Apps have no access to the private data directories of any other app, even if the other app has made them world-readable.
targetSdkVersion of greater than or equal to
32.
On Android S and above, the platform can provide non-text suggestions (e.g. images) via the augmented autofill framework (see autofill services). In order for an app to be able to handle these suggestions, it must normally implement the OnReceiveContentListener API. To make the adoption of this smoother for apps that have previously implemented the InputConnection.commitContent(InputContentInfo, int, Bundle) API, we reuse that API as a fallback if OnReceiveContentListener is not yet implemented by the app. This fallback is only enabled on Android S. This change ID disables the fallback, such that apps targeting Android T and above must implement the OnReceiveContentListener API in order to accept non-text suggestions.
targetSdkVersion of greater than or equal to
30.
This change makes it so that apps are told to show rationale for asking for background location access every time they request.
Check whether apps are using FLAG_SLIPPERY for their windows. We expect that this flag is only used by the system components. If so, we can lock it down.
targetSdkVersion of greater than or equal to
31.
For apps targeting Android S and above, all GpsStatus API usage must be replaced with GnssStatus APIs.
targetSdkVersion of greater than or equal to
31.
For apps targeting Android S and above, immutable PendingIntents passed into location APIs will generate an IllegalArgumentException.
targetSdkVersion of greater than or equal to
17.
For apps targeting Android K and above, incomplete locations may not be passed to setTestProviderLocation(String, Location).
targetSdkVersion of greater than or equal to
31.
For apps targeting Android S and above, LocationRequest system APIs may not be used with PendingIntent location requests.
targetSdkVersion of greater than or equal to
17.
For apps targeting Android K and above, supplied PendingIntents must be targeted to a specific package.
Prevent touches from being consumed by apps if these touches passed through a non-trusted window from a different UID and are considered unsafe.
targetSdkVersion of greater than or equal to
30.
There will now be a callback to OnSharedPreferenceChangeListener.onSharedPreferenceChanged with a null key on Editor.clear.
targetSdkVersion of greater than or equal to
30.
To expand the error codes for updateAvailableNetworks(List and setPreferredOpportunisticDataSubscription(int, boolean, Executor, Consumer.
targetSdkVersion of greater than or equal to
30.
This is a subtle behavior change to startWatchingMode(String, String, AppOpsManager.OnOpChangedListener). Before this change the system called back for the switched op. After the change the system will call back for the actually requested op or all switched ops if no op is specified.
targetSdkVersion of greater than or equal to
30.
In targetSdkVersion R and above, foreground service has camera and microphone while-in-use capability only when the R.attr.foregroundServiceType is configured as ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA and ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE respectively in the manifest file. In targetSdkVersion below R, foreground service automatically have camera and microphone capabilities.
A ChangeId indicating that this device supports camera and mic indicators. Will be "false" if present, because the CompatChanges#isChangeEnabled method returns true if the change id is not present.
targetSdkVersion of greater than or equal to
32.
Refuse to install package if groups of permissions are bad - Permission groups should only be shared between apps sharing a certificate - If a permission belongs to a group that group should be defined
targetSdkVersion of greater than or equal to
30.
Apps that post custom toasts in the background will have those blocked. Apps can still post toasts created with Toast.makeText(Context, CharSequence, int) and its variants while in the background.
targetSdkVersion of greater than or equal to
31.
For clients targeting S and above, a SecurityException is thrown when they are in the denied authorization state and attempt to send a message to a nanoapp.
targetSdkVersion of greater than or equal to
31.
For apps targeting S and above, a SecurityException is thrown when they do not have HIGH_SAMPLING_RATE_SENSORS permission, run in debug mode, and request sampling rates that are faster than 200 Hz.
Intents with action android.settings.MANAGE_APP_OVERLAY_PERMISSION and data URI scheme package don't go to the app-specific screen for managing the permission anymore. Instead, they redirect to this screen for managing all the apps that have requested such permission.
targetSdkVersion of greater than or equal to
30.
Text toasts will be rendered by SystemUI instead of in-app, so apps can't circumvent background custom toast restrictions.
targetSdkVersion of greater than or equal to
31.
A change ID to be used only in the CTS test for this SystemApi
An overridable change ID to be used only in the CTS test for this SystemApi
Scoped Storage is on by default. However, it is not strictly enforced and there are multiple ways to opt out of scoped storage:
FORCE_ENABLE_SCOPED_STORAGE should also be disabled for apps to opt out of scoped storage. Note: This flag is also used in com.android.providers.media.LocalCallingIdentity. Any modifications to this flag should be reflected there as well. See https://developer.android.com/training/data-storage#scoped-storage for more information.
targetSdkVersion of greater than or equal to
31.
For apps targeting Android S and above, location clients may receive historical locations (from before the present time) under some circumstances.
targetSdkVersion of greater than or equal to
10000.
getBestDateTimePattern(Locale, String) does not allow non-consecutive repeated symbol in the skeleton. For example, please use a skeleton of "jmm" or "hmma" instead of "ahmma" or "jmma", because the field 'j' could mean using 12-hour in some locales and, in this case, is duplicated as the 'a' field.
targetSdkVersion of greater than or equal to
31.
Support backward compatibility for TelephonyDisplayInfo.
targetSdkVersion of greater than or equal to
31.
Applications use Display.getRefreshRate() and Display.Mode.getRefreshRate() to know what is the display refresh rate. Starting with Android S, the platform might throttle down applications frame rate to a divisor of the refresh rate if it is more preferable (for example if the application called to Surface.setFrameRate(float, int)). Applications will experience Choreographer.postFrameCallback(Choreographer.FrameCallback) callbacks and backpressure at the throttled frame rate. Display.getRefreshRate() will always return the application frame rate and not the physical display refresh rate to allow applications to do frame pacing correctly. Display.Mode.getRefreshRate() will return the application frame rate if compiled to a previous release and starting with Android S it will return the physical display refresh rate.
CompatModePackages#DOWNSCALED is the gatekeeper of all per-app buffer downscaling changes. Disabling this change will prevent the following scaling factors from working: CompatModePackages#DOWNSCALE_90 CompatModePackages#DOWNSCALE_85 CompatModePackages#DOWNSCALE_80 CompatModePackages#DOWNSCALE_75 CompatModePackages#DOWNSCALE_70 CompatModePackages#DOWNSCALE_65 CompatModePackages#DOWNSCALE_60 CompatModePackages#DOWNSCALE_55 CompatModePackages#DOWNSCALE_50 CompatModePackages#DOWNSCALE_45 CompatModePackages#DOWNSCALE_40 CompatModePackages#DOWNSCALE_35 CompatModePackages#DOWNSCALE_30 If CompatModePackages#DOWNSCALED is enabled for an app package, then the app will be forcibly resized to the highest enabled scaling factor e.g. 80% if both 80% and 70% were enabled.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_30 for a package will force the app to assume it's running on a display with 30% the vertical and horizontal resolution of the real display.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_35 for a package will force the app to assume it's running on a display with 35% the vertical and horizontal resolution of the real display.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_40 for a package will force the app to assume it's running on a display with 40% the vertical and horizontal resolution of the real display.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_45 for a package will force the app to assume it's running on a display with 45% the vertical and horizontal resolution of the real display.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_50 for a package will force the app to assume it's running on a display with 50% vertical and horizontal resolution of the real display.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_55 for a package will force the app to assume it's running on a display with 55% the vertical and horizontal resolution of the real display.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_60 for a package will force the app to assume it's running on a display with 60% the vertical and horizontal resolution of the real display.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_65 for a package will force the app to assume it's running on a display with 65% the vertical and horizontal resolution of the real display.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_70 for a package will force the app to assume it's running on a display with 70% the vertical and horizontal resolution of the real display.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_75 for a package will force the app to assume it's running on a display with 75% the vertical and horizontal resolution of the real display.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_80 for a package will force the app to assume it's running on a display with 80% the vertical and horizontal resolution of the real display.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_85 for a package will force the app to assume it's running on a display with 85% the vertical and horizontal resolution of the real display.
With CompatModePackages#DOWNSCALED enabled, subsequently enabling change-id CompatModePackages#DOWNSCALE_90 for a package will force the app to assume it's running on a display with 90% the vertical and horizontal resolution of the real display.
targetSdkVersion of greater than or equal to
31.
On Android TV applications that target pre-S are not expecting to receive a Window larger than 1080p, so if needed we are downscaling their Windows to 1080p. However, applications that target S and greater release version are expected to be able to handle any Window size, so we should not downscale their Windows.
Intent Intent.ACTION_CLOSE_SYSTEM_DIALOGS is too powerful to be unrestricted. We restrict its usage for a few legitimate use-cases only, regardless of targetSdk. For the other use-cases we drop the intent with a log message. Note that this is the lighter version of #LOCK_DOWN_CLOSE_SYSTEM_DIALOGS which is not gated on targetSdk in order to eliminate the abuse vector.
targetSdkVersion of greater than or equal to
30.
An intent filter's actor or category is an empty string. A bug in the platform before R allowed this to pass through without an error. This does not include cases when the attribute is null/missing, as that has always been a failure.
targetSdkVersion of greater than or equal to
31.
Enables checks to stop apps from inserting and updating to private files via media provider.
targetSdkVersion of greater than or equal to
31.
Enable option to defer the scan triggered as part of MediaProvider#update()
targetSdkVersion of greater than or equal to
31.
Enable READ_PHONE_STATE protection on APIs querying and notifying call state, such as TelecomManager#getCallState, TelephonyManager.getCallStateForSubscription(), and TelephonyCallback.CallStateListener.
targetSdkVersion of greater than or equal to
31.
Enable READ_PHONE_NUMBERS or READ_PRIVILEGED_PHONE_STATE protections on getPhoneAccount(PhoneAccountHandle).
targetSdkVersion of greater than or equal to
31.
Enable option to include database rows of files from recently unmounted volume in MediaProvider#query
targetSdkVersion of greater than or equal to
31.
Allow apps holding Manifest.permission.MANAGE_EXTERNAL_STORAGE permission to request raw external storage access.
targetSdkVersion of greater than or equal to
30.
Allow apps holding android.app.role#SYSTEM_GALLERY role to request raw external storage access.
targetSdkVersion of greater than or equal to
31.
For apps targeting Build.VERSION_CODES.S or above, all inexact alarms will require to have a minimum window size, expected to be on the order of a few minutes. Practically, any alarms requiring smaller windows are the same as exact alarms and should use the corresponding APIs provided, like setExact(int, long, PendingIntent), et al. Inexact alarm with shorter windows specified will have their windows elongated by the system.
targetSdkVersion of greater than or equal to
31.
Apps targeting Android S and above need to declare dependencies to the public native shared libraries that are defined by the device maker using uses-native-library tag in its AndroidManifest.xml. If any of the dependencies cannot be satisfied, i.e. one of the dependency doesn't exist, the package manager rejects to install the app. The dependency can be specified as optional using android:required attribute in the tag, in which case failing to satisfy the dependency doesn't stop the installation.
Once installed, an app is provided with only the native shared libraries that are specified in the app manifest. dlopening a native shared library that doesn't appear in the app manifest will fail even if it actually exists on the device.
The SQLiteQueryBuilder will now verify all CalendarProvider2 query selections against malicious arguments.
targetSdkVersion of greater than or equal to
31.
The BG-launch FGS restriction feature is going to be allowed only for apps targetSdkVersion is higher than R.
targetSdkVersion of greater than or equal to
31.
If a service can not become foreground service due to BG-FGS-launch restriction or other reasons, throws an IllegalStateException.
targetSdkVersion of greater than or equal to
30.
Apps targeting Android R and above will need to declare the packages and intents they intend to use to get details about other apps on a device. Such declarations must be made via the <queries> tag in the manifest.
targetSdkVersion of greater than or equal to
31.
Finish the InputConnection when the device becomes non-interactive.
If enabled by the current input method, the current input connection will be finished whenever the devices becomes non-interactive.
If not enabled, the current input connection will instead be silently deactivated when the devices becomes non-interactive, and an onFinishInput() onStartInput() pair is dispatched when the device becomes interactive again.
Force disable an app from supporting the HEVC media capability Apps should declare their supported media capabilities in their manifest but this flag can be used to force an app into not supporting HEVC, hence forcing transcoding while accessing media encoded in HEVC. Setting this flag will override any OS level defaults for apps. It is disabled by default, meaning that the OS defaults would take precedence. Setting this flag and FORCE_ENABLE_HEVC_SUPPORT is an undefined state and will result in the OS ignoring both flags.
Force enable an app to support the HEVC media capability Apps should declare their supported media capabilities in their manifest but this flag can be used to force an app into supporting HEVC, hence avoiding transcoding while accessing media encoded in HEVC. Setting this flag will override any OS level defaults for apps. It is disabled by default, meaning that the OS defaults would take precedence. Setting this flag and FORCE_DISABLE_HEVC_SUPPORT is an undefined state and will result in the OS ignoring both flags.
Setting this flag strictly enforces Scoped Storage regardless of:
DEFAULT_SCOPED_STORAGE should also be enabled for apps to be enforced into scoped storage. Note: This flag is also used in com.android.providers.media.LocalCallingIdentity. Any modifications to this flag should be reflected there as well. See https://developer.android.com/training/data-storage#scoped-storage for more information.
This change id forces the packages it is applied to to be non-resizable.
This change id forces the packages it is applied to be resizable. It won't change whether the app can be put into multi-windowing mode, but allow the app to resize when the window container resizes, such as display size change.
targetSdkVersion of greater than or equal to
30.
Used for checking if the SDK version for PreciseDataConnectionState#getDataConnectionState is above Q.
targetSdkVersion of greater than or equal to
30.
Used for checking if the SDK version for getDataState() is above Q.
targetSdkVersion of greater than or equal to
30.
For apps targeting Android R and above, getProvider(String) will no longer throw any security exceptions.
targetSdkVersion of greater than or equal to
29.
To check the SDK version for SmsManager.sendResolverResult method.
Enable sampled memory bug detection in the app. @see GWP-ASan.
targetSdkVersion of greater than or equal to
29.
Gating access to greylist-max-p APIs.
targetSdkVersion of greater than or equal to
30.
Gating access to greylist-max-q APIs.
targetSdkVersion of greater than or equal to
31.
Remove "android.icu.impl.ICUBinary.dataPath" property for apps targeting S+. The ICU data path should not visible to the apps.
targetSdkVersion of greater than or equal to
31.
When this change is enabled, android:allowBackup is ignored for apps during D2D (device-to-device) migrations.
targetSdkVersion of greater than or equal to
31.
When this change is enabled, include / exclude rules specified via android:fullBackupContent are ignored during D2D transfers.
targetSdkVersion of greater than or equal to
31.
The getSupportedLocales() now returns empty locale list when it's not set, instead of the default system locale.
targetSdkVersion of greater than or equal to
31.
If this change is enabled, the BACKUP permission needed for isBackupServiceActive() will be enforced on the service end rather than client-side in BackupManager.
Keystore operation creation may fail Keystore used to work under the assumption that the creation of cryptographic operations always succeeds. However, the KeyMint backend has only a limited number of operation slots. In order to keep up the appearance of "infinite" operation slots, the Keystore daemon would prune least recently used operations if there is no available operation slot. As a result, good operations could be terminated prematurely. This opens AndroidKeystore up to denial-of-service and unintended livelock situations. E.g.: if multiple apps wake up at the same time, e.g., due to power management optimizations, and attempt to perform crypto operations, they start terminating each others operations without making any progress. To break out of livelocks and to discourage DoS attempts we have changed the pruning strategy such that it prefers clients that use few operation slots and only briefly. As a result we can, almost, guarantee that single operations that don't linger inactive for more than 5 seconds will conclude unhampered by the pruning strategy. "Almost", because there are operations related to file system encryption that can prune even these operations, but those are extremely rare. As a side effect of this new pruning strategy operation creation can now fail if the client has a lower pruning power than all of the existing operations. Pruning strategy To find a suitable candidate we compute the malus for the caller and each existing operation. The malus is the inverse of the pruning power (caller) or pruning resistance (existing operation). For the caller to be able to prune an operation it must find an operation with a malus higher than its own. For more detail on the pruning strategy consult the implementation at https://android.googlesource.com/platform/system/security/+/refs/heads/master/keystore2/src/operation.rs For older SDK version, KeyStore2 will poll the Keystore daemon for a free operation slot. So to applications, targeting earlier SDK versions, it will still look like cipher and signature object initialization always succeeds, however, it may take longer to get an operation. All SDK version benefit from fairer operation slot scheduling and a better chance to successfully conclude an operation.
targetSdkVersion of greater than or equal to
29.
To check the SDK version for listenFromListener(int, String, String, PhoneStateListener, int, boolean).
targetSdkVersion of greater than or equal to
31.
Intent Intent.ACTION_CLOSE_SYSTEM_DIALOGS is too powerful to be unrestricted. So, apps targeting Build.VERSION_CODES.S or higher will crash if they try to send such intent and don't have permission android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS. Note that this is the more restrict version of #DROP_CLOSE_SYSTEM_DIALOGS that expects the app to stop sending aforementioned intent once it bumps its targetSdk to Build.VERSION_CODES.S or higher.
targetSdkVersion of greater than or equal to
31.
Apps targeting Build.VERSION_CODES.S or higher need Manifest.permission.STATUS_BAR permission to collapse the status bar panels due to security reasons. This was being exploited by malware to prevent the user from accessing critical notifications.
targetSdkVersion of greater than or equal to
31.
For apps targeting Android S and above, all LocationRequest objects marked as low power will throw exceptions if the caller does not have the LOCATION_HARDWARE permission, instead of silently dropping the low power part of the request.
targetSdkVersion of greater than or equal to
30.
Missing an "application" or "instrumentation" tag.
targetSdkVersion of greater than or equal to
31.
Missing `android:exported` flag. When an intent filter is defined, an explicit value for the android:exported flag is required.
targetSdkVersion of greater than or equal to
30.
Native heap allocations will now have a non-zero tag in the most significant byte. @see Tagged Pointers
Enable automatic zero-initialization of native heap memory allocations.
Enable asynchronous (ASYNC) memory tag checking in this process. This flag will only have an effect on hardware supporting the ARM Memory Tagging Extension (MTE).
Enable synchronous (SYNC) memory tag checking in this process. This flag will only have an effect on hardware supporting the ARM Memory Tagging Extension (MTE). If both NATIVE_MEMTAG_ASYNC and this option is selected, this option takes preference and MTE is enabled in SYNC mode.
This change id forces the packages it is applied to never have Display API sandboxing applied for a letterbox or SCM activity. The Display APIs will continue to provide DisplayArea bounds.
targetSdkVersion of greater than or equal to
31.
Whether a notification listeners can understand new, more specific, cancellation reasons.
targetSdkVersion of greater than or equal to
31.
Activity starts coming from broadcast receivers or services in response to notification and notification action clicks will be blocked for UX and performance reasons. Instead start the activity directly from the PendingIntent.
targetSdkVersion of greater than or equal to
31.
Used for checking if the target SDK version for the current process is S or above.
Applies to the following methods: requestCellInfoUpdate(Executor, TelephonyManager.CellInfoCallback), setPreferredOpportunisticDataSubscription(int, boolean, Executor, Consumer, updateAvailableNetworks(List, requestNumberVerification(), setSimPowerStateForSlot(),
This change id is the gatekeeper for all treatments that force a given min aspect ratio. Enabling this change will allow the following min aspect ratio treatments to be applied: OVERRIDE_MIN_ASPECT_RATIO_MEDIUM OVERRIDE_MIN_ASPECT_RATIO_LARGE If OVERRIDE_MIN_ASPECT_RATIO is applied, the min aspect ratio given in the app's manifest will be overridden to the largest enabled aspect ratio treatment unless the app's manifest value is higher.
This change id sets the activity's min aspect ratio to a large value as defined by OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE. This treatment only takes effect if OVERRIDE_MIN_ASPECT_RATIO is also enabled.
This change id sets the activity's min aspect ratio to a medium value as defined by OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE. This treatment only takes effect if OVERRIDE_MIN_ASPECT_RATIO is also enabled.
targetSdkVersion of greater than or equal to
31.
It is now required to specify either FLAG_IMMUTABLE or FLAG_MUTABLE when creating a PendingIntent.
This change enables a limit on the number of TelephonyCallback objects any process may register via TelephonyManager.registerTelephonyCallback(Executor, TelephonyCallback). The default limit is 50, which may change via remote device config updates. This limit is enforced via an IllegalStateException thrown from TelephonyManager.registerTelephonyCallback(Executor, TelephonyCallback) when the offending process attempts to register one too many callbacks.
targetSdkVersion of greater than or equal to
30.
Remove meta-reflection workaround for hidden api usage for apps targeting R+. This allowed apps to obtain references to blocklist fields and methods through an extra layer of reflection.
targetSdkVersion of greater than or equal to
31.
Admin apps targeting Android S+ may not use DevicePolicyManager.setPasswordQuality(ComponentName, int) to set password quality on the DevicePolicyManager instance obtained by calling DevicePolicyManager.getParentProfileInstance(ComponentName). Instead, they should use DevicePolicyManager.setRequiredPasswordComplexity(int) to set coarse-grained password requirements device-wide.
targetSdkVersion of greater than or equal to
30.
Flag Context.BIND_INCLUDE_CAPABILITIES is used to pass while-in-use capabilities from client process to bound service. In targetSdkVersion R and above, if client is a TOP activity, when this flag is present, bound service gets all while-in-use capabilities; when this flag is not present, bound service gets no while-in-use capability from client.
Rate limit showing toasts, on a per package basis. It limits the number of Toast.show() calls to prevent overburdening the user with too many toasts in a limited time. Any attempt to show more toasts than allowed in a certain time frame will result in the toast being discarded.
targetSdkVersion of greater than or equal to
30.
Remove android.test.base library for apps that target SDK R or more and do not depend on android.test.runner (as it depends on classes from the android.test.base library).
targetSdkVersion of greater than or equal to
30.
For accessibility services targeting APIs greater than API 29, FLAG_REQUEST_ACCESSIBILITY_BUTTON must be specified in the accessibility service metadata file. Otherwise, it will be ignored.
targetSdkVersion of greater than or equal to
31.
For apps targeting Build.VERSION_CODES.S or above, any APIs setting exact alarms, e.g. setExact(int, long, PendingIntent), setAlarmClock(AlarmClockInfo, PendingIntent) and others will require holding a new permission Manifest.permission.SCHEDULE_EXACT_ALARM
targetSdkVersion of greater than or equal to
31.
To check the SDK version for TelephonyCallback.ActiveDataSubscriptionIdListener should add Manifest.permission.READ_PHONE_STATE since Android 12.
targetSdkVersion of greater than or equal to
31.
To check the SDK version for TelephonyCallback.CellInfoListener should add Manifest.permission.READ_PHONE_STATE since Android 12.
targetSdkVersion of greater than or equal to
31.
To check the SDK version for TelephonyCallback.DisplayInfoListener should remove Manifest.permission.READ_PHONE_STATE since Android 12.
targetSdkVersion of greater than or equal to
30.
The resources.arsc of one of the APKs being installed is compressed or not aligned on a 4-byte boundary. Resource tables that cannot be memory mapped exert excess memory pressure on the system and drastically slow down construction of Resources objects.
targetSdkVersion of greater than or equal to
31.
When this change is enabled, adb backup is automatically turned on for apps running as debuggable (android:debuggable set to true) and unavailable to any other apps.
targetSdkVersion of greater than or equal to
31.
With the updated form of the app links verification APIs, an app will be required to declare domains inside an intent filter which includes all of the following:
On prior versions of Android, Intent.CATEGORY_BROWSABLE was not a requirement, other schemes were allowed, and setting autoVerify to true in any intent filter would implicitly pretend that all intent filters were set to autoVerify="true".
targetSdkVersion of greater than or equal to
30.
We support restrict Storage Access Framework from Build.VERSION_CODES.R. App Compatibility flag that indicates whether the app should be restricted or not. This flag is turned on by default for all apps targeting > Build.VERSION_CODES.Q.
targetSdkVersion of greater than or equal to
31.
When enabled, apps targeting < Android 12 are considered legacy for the NSD native daemon. The platform will only keep the daemon running as long as there are any legacy apps connected. After Android 12, directly communicate with native daemon might not work since the native damon won't always stay alive. Use the NSD APIs from NsdManager as the replacement is recommended. An another alternative could be bundling your own mdns solutions instead of depending on the system mdns native daemon.
targetSdkVersion of greater than or equal to
31.
Enforce that all attributionTags send to noteOp(String, int, String), noteProxyOp(String, String), and startOp(String, int, String) are defined in the manifest of the package that is specified as parameter to the methods.
To enable this change both the package calling noteOp(String, int, String) as well as the package specified as parameter to the method need to have this change enable.
targetSdkVersion of greater than or equal to
31.
Allows opt-in to the latest targetSdkVersion enforced changes without changing target SDK. Turning this change off for an app targeting the latest SDK is a no-op.
Has no effect for apps using shared user id. TODO(b/143539591): Update description with relevant SELINUX changes this opts in to.
targetSdkVersion of greater than or equal to
30.
This change gates apps access to untrusted_app_R-targetSDK SELinux domain. Allows opt-in to R targetSdkVersion enforced changes without changing target SDK. Turning this change off for an app targeting S is a no-op.
Has no effect for apps using shared user id. TODO(b/143539591): Update description with relevant SELINUX changes this opts in to.
The new user preference API for verifying domains marked autoVerify=true in AndroidManifest.xml intent filters is not yet implemented in the current platform preview. This is anticipated to ship before S releases. For now, it is possible to preview the new user preference changes by enabling this ChangeId and using the adb shell pm set-app-links-user-selection and similar commands.
targetSdkVersion of greater than or equal to
30.
Adding an installer package name to a package that does not have one set requires the INSTALL_PACKAGES permission. If the caller targets R, this will throw a SecurityException. Otherwise the request will fail silently. In both cases, and regardless of whether this change is enabled, the installer package will remain unchanged.
targetSdkVersion of greater than or equal to
30.
Pre R a SecurityException would only be thrown by setEnabled APIs (e .g. setEnabled(String, boolean, UserHandle)) for a permission error. Since R this no longer holds true, and SecurityException can be thrown for any number of reasons, none of which are exposed to the caller.
To maintain existing API behavior, if a legacy permission failure or actor enforcement failure occurs for an app not yet targeting R, coerce it into an IllegalStateException, which existed in the source prior to R.
targetSdkVersion of greater than or equal to
30.
Since Android 11, formatter classes, e.g. java.text.SimpleDateFormat, no longer provide English data when Locale.ROOT format is requested. Please use Locale.ENGLISH to format in English. Note that Locale.ROOT is used as language/country neutral locale or fallback locale, and does not guarantee to represent English locale. This flag is only for documentation and can't be overridden by app. Please use targetSdkVersion to enable the new behavior.
targetSdkVersion of greater than or equal to
30.
Admin apps targeting Android R+ may not use DevicePolicyManager.setSecureSetting(ComponentName, String, String) to change the deprecated Settings.Secure.LOCATION_MODE setting. Instead they should use DevicePolicyManager.setLocationEnabled(ComponentName, boolean).
targetSdkVersion of greater than or equal to
31.
For apps targeting S+, this determines whether to use a shorter timeout before elevating the standby bucket to ACTIVE when apps start a foreground service.
targetSdkVersion of greater than or equal to
1.
This sets the edge effect to use stretch instead of glow.