Cette page décrit chaque modification de comportement affectant les applications qui a été ajoutée au framework de compatibilité dans Android 11 (niveau d'API 30). Utilisez cette liste conjointement avec les options pour les développeurs et les commandes ADB pour tester et déboguer votre application en vue de cibler Android 11.
ADD_CONTENT_OBSERVER_FLAGS
ID de modification: 150939131
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour les applications ciblant Android 11, une nouvelle surcharge d'API publique onChange(boolean, Uri, int)
est disponible, qui inclut un argument flags
entier.
Cette nouvelle méthode est une alternative de SDK public pour les applications qui utilisent la méthode surchargée onChange()
non SDK qui inclut un argument userId
entier.
ADMIN_APP_PASSWORD_COMPLEXITY
ID de modification: 123562444
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour les applications d'administration ciblant Android 11, une erreur est générée chaque fois qu'une application définit une exigence de mot de passe qui n'est pas pertinente pour la qualité du mot de passe actuellement attribué. Par exemple, lorsque la qualité du mot de passe est définie sur DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
, une application ne peut pas définir de longueur minimale de mot de passe. Dans ce cas, avant d'essayer de définir la longueur minimale du mot de passe, l'application doit d'abord appeler la méthode setPasswordQuality()
, puis la méthode setPasswordMinimumLength()
.
De plus, lorsqu'une application d'administration ciblant Android 11 réduit la qualité du mot de passe, toutes les exigences de mot de passe existantes qui ne s'appliquent plus sont réinitialisées à leurs valeurs par défaut.
APP_DATA_DIRECTORY_ISOLATION
ID de modification: 143937733
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Les applications qui ciblent Android 11 ne peuvent plus accéder aux fichiers des répertoires de données privées de n'importe quelle application, quelle que soit la version de SDK cible de l'autre application.
Pour en savoir plus, consultez la section Accès aux répertoires privés.
APN_READING_PERMISSION_CHANGE_ID
ID de modification: 124107808
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour les applications ciblant Android 11, l'accès à la base de données APN nécessite désormais l'autorisation Manifest.permission.WRITE_APN_SETTINGS
.
Pour en savoir plus sur cette modification, consultez Accès en lecture limité à la base de données APN.
BACKGROUND_RATIONALE_CHANGE_ID
ID de modification: 147316723
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Les applications doivent désormais fournir une justification valide chaque fois qu'elles demandent à accéder à la position de l'appareil en arrière-plan.
Pour en savoir plus sur cette modification, consultez le guide sur l'accès à la position en arrière-plan dans Android 11, qui décrit les modifications apportées à la confidentialité liées à la position dans Android 11.
CALLBACK_ON_CLEAR_CHANGE
ID de modification: 119147584
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Chaque fois que Editor.clear
est appelé, un rappel est désormais effectué sur OnSharedPreferenceChangeListener.onSharedPreferenceChanged
avec une clé null
.
Pour en savoir plus sur ce changement, consultez la section Modifications apportées aux rappels pour OnSharedPreferenceChangeListener.
CALLBACK_ON_MORE_ERROR_CODE_CHANGE
ID de modification: 130595455
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Les codes d'erreur sont désormais développés pour updateAvailableNetworks(List,
Executor,
Consumer)
et setPreferredOpportunisticDataSubscription(int, boolean, Executor,
Consumer)
.
CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
ID de modification: 148180766
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Il s'agit d'un changement subtil de comportement pour startWatchingMode(String, String,
AppOpsManager.OnOpChangedListener)
.
Avant ce changement, le système était appelé pour l'opération commutée. Après ce changement, le système sera appelé pour l'opération réellement demandée ou pour toutes les opérations commutées si aucune opération n'est spécifiée.
CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID
ID de modification: 136219221
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour les applications ciblant Android 11, les services de premier plan ne reçoivent les fonctionnalités de la caméra et du micro en cours d'utilisation que lorsque R.attr.foregroundServiceType
est configuré en tant que ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
et ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
, respectivement, dans le fichier manifeste. Dans les versions antérieures d'Android, les services de premier plan recevaient automatiquement les fonctionnalités de la caméra et du micro.
Pour en savoir plus sur ce changement, consultez la section Types de services de premier plan dans Android 11.
CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK
ID de modification: 128611929
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Les applications ne peuvent plus publier de notifications toast personnalisées en arrière-plan. Toutefois, les applications peuvent toujours publier des toasts à l'aide de la méthode Toast.makeText(Context, CharSequence,
int)
et de ses variantes en arrière-plan.
Pour en savoir plus sur cette modification, consultez Les vues de notification toast personnalisées sont bloquées.
CHANGE_RESTRICT_SAW_INTENT
ID de modification: 135920175
État par défaut: cette modification ne peut pas être activée/désactivée. Il n'est enregistré que par le framework de compatibilité.
Les intents utilisant l'action android.settings.MANAGE_APP_OVERLAY_PERMISSION
et le schéma URI de données package
ne redirigent plus l'utilisateur vers un écran spécifique à l'application pour gérer l'autorisation associée. À la place, l'utilisateur est redirigé vers un écran où il peut gérer toutes les applications ayant demandé l'autorisation.
CHANGE_TEXT_TOASTS_IN_THE_SYSTEM
ID de modification: 147798919
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Les toasts textuels sont désormais affichés par SystemUI au lieu de l'application. Cela empêche les applications de contourner les restrictions concernant la publication de toasts personnalisés en arrière-plan.
DEFAULT_SCOPED_STORAGE
ID de modification: 149924527
État par défaut: Activé pour toutes les applications.
Toutes les applications ciblant Android 11 utilisent désormais l'espace de stockage cloisonné par défaut et ne peuvent plus le désactiver.
Toutefois, vous pouvez tester votre application sans stockage ciblé, quelle que soit la version du SDK cible et les valeurs des indicateurs de fichier manifeste de votre application, en désactivant ce changement.
Pour en savoir plus sur les modifications apportées à l'espace de stockage cloisonné dans Android 11, consultez la section Espace de stockage cloisonné sur la page dédiée aux modifications apportées au stockage Android dans Android 11.
EMPTY_INTENT_ACTION_CATEGORY
ID de modification: 151163173
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour les applications ciblant Android 11, le système génère désormais une erreur si action
ou category
d'un filtre d'intent est une chaîne vide. Un bug de la plate-forme avant Android 11 permettait à ce cas de passer sans générer d'erreur. Notez que cela n'inclut pas les cas où l'attribut est nul ou manquant, car cela a toujours généré une erreur.
FILTER_APPLICATION_QUERY
ID de modification: 135549675
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Les applications doivent désormais déclarer les packages et les intents qu'elles prévoient d'utiliser avant de pouvoir obtenir des informations sur d'autres applications sur un appareil. Ces déclarations doivent être effectuées à l'aide de la balise <queries>
dans le fichier manifeste de l'application.
Pour en savoir plus sur l'interrogation et l'interaction avec d'autres applications installées sous Android 11, consultez la page de confidentialité sur la visibilité des packages.
FORCE_ENABLE_SCOPED_STORAGE
ID de modification: Valeur: 132649864
État par défaut: Désactivé pour toutes les applications.
Toutes les applications ciblant Android 11 utilisent désormais l'espace de stockage cloisonné par défaut et ne peuvent plus le désactiver.
Toutefois, si votre application cible toujours Android 10 (niveau d'API 29) ou version antérieure, vous pouvez la tester avec l'espace de stockage cloisonné, quelle que soit la version du SDK cible et les valeurs des indicateurs de fichier manifeste de votre application, en activant cette modification.
Pour en savoir plus sur les modifications apportées à l'espace de stockage cloisonné dans Android 11, consultez la section Espace de stockage cloisonné sur la page dédiée aux modifications apportées à l'espace de stockage Android dans Android 11.
GET_DATA_CONNECTION_STATE_R_VERSION
ID de modification: 148535736
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour vérifier la version du SDK pour PreciseDataConnectionState#getDataConnectionState
.
GET_DATA_STATE_R_VERSION
ID de modification: 148534348
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour vérifier la version du SDK pour getDataState()
.
GET_PROVIDER_SECURITY_EXCEPTIONS
ID de modification: 150935354
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour les applications ciblant Android 11 (niveau d'API 30) ou version ultérieure, getProvider(String)
n'affiche plus d'exceptions de sécurité.
GET_TARGET_SDK_VERSION_CODE_CHANGE
ID de modification: 145147528
État par défaut: Activé pour les applications qui ciblent Android 10 (niveau d'API 29) ou version ultérieure.
Pour vérifier la version du SDK pour la méthode SmsManager.sendResolverResult()
.
GWP_ASAN
ID de modification: 135634846
État par défaut: Désactivé pour toutes les applications.
Active la détection de bugs dans la mémoire native échantillonnée dans les applications.
Pour en savoir plus sur ce changement, consultez le guide GWP-ASan.
HIDE_MAXTARGETSDK_P_HIDDEN_APIS
ID de modification: 149997251
État par défaut: Activé pour les applications qui ciblent Android 10 (niveau d'API 29) ou version ultérieure.
Pour les applications ciblant Android 10 (niveau d'API 29) ou version ultérieure, supprime l'accès à toutes les interfaces non SDK qui font partie de la liste max-target-p
(greylist-max-p
) pour Android 10 (niveau d'API 29).
HIDE_MAXTARGETSDK_Q_HIDDEN_APIS
ID de modification: 149994052
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour les applications ciblant Android 11 (niveau d'API 30) ou version ultérieure, supprime l'accès à toutes les interfaces non SDK qui font partie de la liste max-target-q
(greylist-max-q
) pour Android 11 (niveau d'API 30).
Pour en savoir plus sur cette modification, consultez la section Interfaces non SDK désormais bloquées dans Android 11.
LISTEN_CODE_CHANGE
ID de modification: 147600208
État par défaut: Activé pour les applications qui ciblent Android 10 (niveau d'API 29) ou version ultérieure.
Pour vérifier la version du SDK pour TelephonyManager.listen(PhoneStateListener,
int)
:
MISSING_APP_TAG
ID de modification: 150776642
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour les applications ciblant Android 11, une erreur est désormais générée lorsqu'une balise application
ou instrumentation
est manquante dans le fichier manifeste d'une application.
NATIVE_HEAP_POINTER_TAGGING
ID de modification: 135754954
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour les applications ciblant Android 11, les allocations de tas natives comportent désormais une balise non nulle dans l'octet le plus significatif.
Pour en savoir plus, consultez la section Taggage des pointeurs de tas de mémoire.
PHONE_STATE_LISTENER_LIMIT_CHANGE_ID
ID de modification: 150880553
État par défaut: Activé pour toutes les applications.
Pour les applications ciblant Android 11, le nombre d'objets PhoneStateListener
qu'un processus peut enregistrer via TelephonyManager.listen(PhoneStateListener, int)
est désormais limité.
La limite par défaut est de 50, mais elle peut être modifiée par des mises à jour de la configuration de l'appareil à distance.
Cette limite est appliquée à l'aide d'une exception IllegalStateException
générée par TelephonyManager.listen(PhoneStateListener, int)
lorsque le processus en cause tente d'enregistrer un écouteur de trop.
PREVENT_META_REFLECTION_BLACKLIST_ACCESS
ID de modification: 142365358
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Les applications ciblant Android 11 ne peuvent plus utiliser une couche de réflexion supplémentaire pour accéder aux interfaces non SDK qui sont limitées.
PROCESS_CAPABILITY_CHANGE_ID
ID de modification: 136274596
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour les applications ciblant Android 11, l'indicateur Context.BIND_INCLUDE_CAPABILITIES
peut désormais être utilisé pour transmettre les fonctionnalités en cours d'utilisation du processus client à un service lié.
REMOVE_ANDROID_TEST_BASE
ID de modification: 133396946
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour les applications ciblant Android 11, la bibliothèque android.test.base
a été supprimée si l'application ne dépend pas de android.test.runner
(car elle dépend des classes de la bibliothèque android.test.base
).
REQUEST_ACCESSIBILITY_BUTTON_CHANGE
ID de modification: 136293963
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Pour les services d'accessibilité ciblant Android 11, l'indicateur FLAG_REQUEST_ACCESSIBILITY_BUTTON
doit désormais être spécifié dans le fichier de métadonnées du service d'accessibilité.
Sinon, l'indicateur est ignoré.
Pour en savoir plus sur ce changement, consultez la section Déclarer l'utilisation du bouton d'accessibilité dans le fichier de métadonnées.
RESOURCES_ARSC_COMPRESSED
ID de modification: 132742131
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Les applications ciblant Android 11 (niveau d'API 30) ne peuvent pas être installées si elles contiennent un fichier resources.arsc
compressé ou si ce fichier n'est pas aligné sur une limite de 4 octets.
Pour en savoir plus sur cette modification, consultez la section Fichiers de ressources compressés.
RESTRICT_STORAGE_ACCESS_FRAMEWORK
ID de modification: 141600225
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Si votre application cible Android 11 et utilise le Storage Access Framework (SAF), vous ne pouvez plus accéder à certains répertoires à l'aide des actions d'intent ACTION_OPEN_DOCUMENT
et ACTION_OPEN_DOCUMENT_TREE
. Pour en savoir plus sur ces modifications, consultez la section Restrictions d'accès aux documents de la page qui décrit les mises à jour de confidentialité liées au stockage dans Android 11.
SELINUX_LATEST_CHANGES
ID de modification: 143539591
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Ce changement limite l'accès des applications au domaine SELinux untrusted_app_R-targetSDk.
Il s'agit de l'une des modifications fondamentales du framework de compatibilité qui permet aux applications d'activer ou de désactiver d'autres modifications contrôlées par targetSdkVersion
sans modifier le targetSDKVersion
de leur application. C'est pourquoi vous ne devez pas désactiver cette modification pour une application qui cible Android 11, sinon elle ne fonctionnera pas.
Ce changement n'a aucune incidence sur les applications qui utilisent un ID utilisateur partagé.
THROW_SECURITY_EXCEPTIONS
ID de modification: 147340954
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Avant Android 11, une exception SecurityException
n'était générée que par les API setEnabled
en cas d'erreur d'autorisation. Dans Android 11, ce n'est plus le cas, et une exception SecurityException
peut être générée pour un certain nombre de raisons, aucune d'entre elles n'étant exposée à l'appelant.
Pour conserver le comportement existant de l'API, si un échec d'autorisation héritée ou un échec d'application de l'acteur se produit pour une application qui ne cible pas Android 11, l'exception est forcée dans un IllegalStateException
qui existait dans la source avant Android 11.
USE_SET_LOCATION_ENABLED
ID de modification: 117835097
État par défaut: Activé pour les applications qui ciblent Android 11 (niveau d'API 30) ou version ultérieure.
Les applications d'administration ciblant Android 11 ne peuvent plus utiliser DevicePolicyManager.setSecureSetting(ComponentName, String, String)
pour modifier le paramètre Settings.Secure.LOCATION_MODE
obsolète. Ils doivent utiliser DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
à la place.