Cette page décrit chaque changement de comportement ayant une incidence sur l'application qui a été ajouté au framework de compatibilité sous 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 lorsque vous vous préparez à cibler Android 11.
AJOUTER_CONTENU_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, il existe une nouvelle surcharge d'API publique onChange(boolean, Uri, int)
qui inclut un argument flags
entier.
Cette nouvelle méthode est une alternative SDK publique 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, générez une erreur chaque fois qu'une application définit une exigence de mot de passe qui n'est pas adaptée à 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 une 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()
.
En outre, lorsqu'une application d'administration ciblant Android 11 réduit la qualité du mot de passe, toutes les exigences 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és de n'importe quelle application, quelle que soit la version du 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 la section 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 ce changement, consultez le guide Accéder à la localisation en arrière-plan sous Android 11, qui traite des changements concernant la confidentialité liés à la localisation 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 envoyé à OnSharedPreferenceChangeListener.onSharedPreferenceChanged
avec une clé null
.
Pour en savoir plus sur cette modification, consultez Modifications des 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 maintenant 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 de comportement subtil de startWatchingMode(String, String,
AppOpsManager.OnOpChangedListener)
.
Avant cette modification, le système rappelait l'opération commutée. Une fois la modification effectuée, le système rappellera l'opération réellement demandée ou 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 l'appareil photo et le micro pendant l'utilisation que si R.attr.foregroundServiceType
est configuré en tant que ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
et ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
, respectivement dans le fichier manifeste. Sur les versions antérieures d'Android, les services de premier plan recevaient automatiquement les fonctionnalités de caméra et de micro.
Pour en savoir plus sur ce changement, consultez 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 toasts personnalisés en arrière-plan. Toutefois, les applications peuvent toujours publier des toasts en arrière-plan à l'aide de la méthode Toast.makeText(Context, CharSequence,
int)
et de ses variantes.
Pour en savoir plus sur cette modification, consultez la section Les affichages de toast personnalisés sont bloqués.
CHANGE_RESTRICT_SAW_INTENT
ID de modification: 135920175
État par défaut: cette modification n'est pas activable. Elles ne sont consignées que par le framework de compatibilité.
Les intents utilisant l'action android.settings.MANAGE_APP_OVERLAY_PERMISSION
et le schéma d'URI de données package
ne redirigent plus l'utilisateur vers un écran spécifique à l'application pour gérer l'autorisation associée. Au lieu de cela, l'utilisateur est redirigé vers un écran sur lequel il peut gérer toutes les applications qui ont 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 plutôt que dans l'application. Cela empêche les applications de contourner les restrictions concernant la publication de toasts personnalisés en arrière-plan.
STOCKAGE_PAR DÉFAUT_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 désactiver l'espace de stockage cloisonné.
Toutefois, vous pouvez tester votre application sans espace de stockage cloisonné, quelles que soient la version du SDK cible et les valeurs d'indicateur du fichier manifeste de votre application, en désactivant 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é de la page concernant les modifications apportées à l'espace de stockage Android sous 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 antérieur à Android 11 a permis à 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.
REQUÊTE_FILTRE_APPLICATION
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 ont l'intention d'utiliser avant de pouvoir obtenir des informations sur les autres applications d'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 dans Android 11, consultez la page de confidentialité package visibility (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 désactiver l'espace de stockage cloisonné.
Toutefois, si votre application cible toujours Android 10 (niveau d'API 29) ou une version antérieure, vous pouvez la tester avec un espace de stockage cloisonné, quelles que soient la version du SDK cible et les valeurs d'indicateur du 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é de la page concernant les modifications apportées à l'espace de stockage Android sous 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)
ne génère 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 version 10 (niveau 29 d'API) ou 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 ce changement, 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)
:
BALISE_APPLICATION_MANQUANTE
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'il manque une balise application
ou instrumentation
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 segments de mémoire natives comportent désormais une balise non nulle dans l'octet le plus significatif.
Pour en savoir plus, consultez la section Balisage 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
que tout processus peut enregistrer via TelephonyManager.listen(PhoneStateListener, int)
est désormais limité.
La limite par défaut est de 50, qui peut être modifiée par les mises à jour de la configuration de l'appareil distant.
Cette limite est appliquée à l'aide d'une IllegalStateException
générée par TelephonyManager.listen(PhoneStateListener, int)
lorsque le processus incriminé tente d'enregistrer un trop grand nombre d'écouteurs.
PRÉVENTION_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 de couche de réflexion supplémentaire pour accéder aux interfaces non SDK 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 des 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_BOUTON_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 cette modification, consultez la section Déclarer l'utilisation du bouton Accessibilité dans le fichier de métadonnées.
RESSOURCES_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 quatre 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 framework d'accès au stockage (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 traite des modifications de la 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.
Cette modification restreint l'accès des applications au domaine SELinux trusted_app_R-targetSDk.
Il s'agit de l'une des modifications fondamentales du framework de compatibilité qui permettent aux applications d'activer ou de désactiver d'autres modifications contrôlées par targetSdkVersion
sans modifier le targetSDKVersion
de leur application. Par conséquent, vous ne devez pas désactiver cette modification pour une application qui cible Android 11, sinon l'application ne fonctionnera pas.
Cette modification n'a aucun effet pour les applications qui utilisent un ID utilisateur partagé.
EXCEPTIONS_SÉCURITÉ_THROW
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 erreur SecurityException
n'était générée par les API setEnabled
que pour une erreur d'autorisation. Dans Android 11, ce n'est plus le cas, et une SecurityException
peut être générée pour plusieurs raisons, dont aucune n'est exposée à l'appelant.
Pour maintenir le comportement existant de l'API, en cas d'échec de l'ancienne autorisation ou de l'application par un acteur 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. Il doit plutôt utiliser DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
.