Android 11 permet aux utilisateurs de spécifier des autorisations plus précises pour la position, le micro et la caméra. De plus, le système réinitialise les autorisations des applications inutilisées qui ciblent Android 11 ou une version ultérieure. Les applications peuvent être amenées à mettre à jour les autorisations qu'elles déclarent si elles utilisent la fenêtre d'alerte du système ou lisent des informations liées aux numéros de téléphone.
Autorisations ponctuelles
À partir d'Android 11, chaque fois que votre application demande une autorisation liée à la localisation, au micro ou à l'appareil photo, la boîte de dialogue des autorisations visibles par l'utilisateur contient une option appelée Only this time (Uniquement cette fois-ci). Si l'utilisateur sélectionne cette option dans la boîte de dialogue, une autorisation ponctuelle temporaire est accordée à votre application.
Découvrez comment le système gère les autorisations ponctuelles.
Réinitialiser automatiquement les autorisations des applications inutilisées
Si votre application cible Android 11 ou une version ultérieure et n'est pas utilisée pendant quelques mois, le système protège les données utilisateur en réinitialisant automatiquement les autorisations d'exécution sensibles que l'utilisateur a accordées à votre application. Cette action a le même effet que si l'utilisateur avait affiché une autorisation dans les paramètres système et défini le niveau d'accès de votre application sur Refuser. Si votre application respecte les bonnes pratiques concernant les demandes d'autorisations au moment de l'exécution, vous ne devriez pas avoir à la modifier. En effet, lorsque l'utilisateur interagit avec les fonctionnalités de votre application, vous devez vérifier que celles-ci disposent des autorisations nécessaires.
Découvrez comment le système réinitialise automatiquement les autorisations des applications inutilisées.
Visibilité de la boîte de dialogue d'autorisation
À partir d'Android 11, si l'utilisateur appuie sur Deny (Refuser) pour une autorisation spécifique plusieurs fois pendant l'installation de votre application sur un appareil, il ne verra pas la boîte de dialogue des autorisations système si votre application demande à nouveau cette autorisation. L'action de l'utilisateur implique l'option "Ne plus demander". Dans les versions antérieures, la boîte de dialogue des autorisations système s'affichait chaque fois que l'application demandait une autorisation, sauf si l'utilisateur avait déjà coché une case ou une option "Ne plus demander". Ce changement de comportement dans Android 11 dissuade de demander à plusieurs reprises des autorisations que les utilisateurs ont choisi de refuser.
Pour déterminer si des autorisations d'application ont été définitivement refusées (à des fins de débogage et de test), utilisez la commande suivante :
adb shell dumpsys package PACKAGE_NAME
Où PACKAGE_NAME est le nom du package à inspecter.
Le résultat de la commande contient des sections qui se présentent comme suit :
... runtime permissions: android.permission.POST_NOTIFICATIONS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.ACCESS_FINE_LOCATION: granted=false, flags=[ USER_SET|USER_FIXED|USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.BLUETOOTH_CONNECT: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] ...
Les autorisations qui ont été refusées une fois par l'utilisateur sont signalées par USER_SET
.
Les autorisations qui ont été définitivement refusées en sélectionnant Refuser à deux reprises sont signalées par USER_FIXED
.
Lors des tests, vous pouvez réinitialiser ces indicateurs pour éviter que les testeurs ne soient surpris lorsque la boîte de dialogue de requête ne s'affiche pas. Pour ce faire, exécutez la commande suivante:
adb shell pm clear-permission-flags PACKAGE_NAME PERMISSION_NAME user-set user-fixed
PERMISSION_NAME est le nom de l'autorisation que vous souhaitez réinitialiser. Pour afficher la liste complète des autorisations des applications Android, consultez la page de référence des API d'autorisation.
Découvrez comment gérer le refus d'autorisation dans votre application.
Modifications de la fenêtre d'alerte système
Android 11 apporte plusieurs modifications à la façon dont les applications reçoivent l'autorisation SYSTEM_ALERT_WINDOW
. Ces modifications visent à protéger les utilisateurs en rendant l'autorisation plus intentionnelle.
Certaines applications reçoivent automatiquement l'autorisation SYSTEM_ALERT_WINDOW sur demande
Certaines classes d'applications reçoivent automatiquement l'autorisation SYSTEM_ALERT_WINDOW
sur demande :
L'autorisation est automatiquement accordée à toute application qui possède
ROLE_CALL_SCREENING
et demandeSYSTEM_ALERT_WINDOW
. Si l'application perdROLE_CALL_SCREENING
, elle perd l'autorisation.Toute application qui capture l'écran via un
MediaProjection
et qui demandeSYSTEM_ALERT_WINDOW
se voit automatiquement accorder l'autorisation, sauf si l'utilisateur a explicitement refusé l'autorisation à l'application. Lorsque l'application cesse de capturer l'écran, elle perd l'autorisation. Ce cas d'utilisation est principalement destiné aux applications de streaming en direct dans des jeux.
Ces applications n'ont pas besoin d'envoyer ACTION_MANAGE_OVERLAY_PERMISSION
pour obtenir l'autorisation SYSTEM_ALERT_WINDOW
. Elles peuvent simplement demander SYSTEM_ALERT_WINDOW
directement.
Les intents MANAGE_OVERLAY_PERMISSION redirigent toujours l'utilisateur vers l'écran des autorisations système
À partir d'Android 11, les intents ACTION_MANAGE_OVERLAY_PERMISSION
redirigent toujours l'utilisateur vers l'écran Settings (Paramètres) de premier niveau, où il peut accorder ou révoquer les autorisations SYSTEM_ALERT_WINDOW
pour les applications. Toutes les données package:
de l'intent sont ignorées.
Dans les versions antérieures d'Android, l'intent ACTION_MANAGE_OVERLAY_PERMISSION
pouvait spécifier un package, ce qui amène l'utilisateur à un écran spécifique à l'application pour gérer l'autorisation. Cette fonctionnalité n'est plus disponible depuis Android 11. L'utilisateur doit d'abord sélectionner l'application à laquelle il souhaite accorder ou révoquer l'autorisation. Cette modification vise à protéger les utilisateurs en rendant l'autorisation plus intentionnelle.
Numéros de téléphone
Android 11 modifie l'autorisation liée au téléphone que votre application utilise lors de la lecture des numéros de téléphone.
Si votre application cible Android 11 ou une version ultérieure et qu'elle doit accéder aux API de numéro de téléphone indiquées dans la liste suivante, vous devez demander l'autorisation READ_PHONE_NUMBERS
au lieu de l'autorisation READ_PHONE_STATE
.
- La méthode
getLine1Number()
dans les classesTelephonyManager
etTelecomManager
. - La méthode
getMsisdn()
non compatible dans la classeTelephonyManager
.
Si votre application déclare READ_PHONE_STATE
pour appeler des méthodes autres que celles de la liste précédente, vous pouvez continuer à demander READ_PHONE_STATE
dans toutes les versions d'Android. Toutefois, si vous n'utilisez l'autorisation READ_PHONE_STATE
que pour les méthodes de la liste précédente, mettez à jour votre fichier manifeste comme suit:
- Modifiez votre déclaration de
READ_PHONE_STATE
afin que votre application n'utilise l'autorisation que sur Android 10 (niveau d'API 29) ou version antérieure. - Ajoutez l'autorisation
READ_PHONE_NUMBERS
.
L'extrait de déclaration de fichier manifeste suivant illustre ce processus :
<manifest> <!-- Grants the READ_PHONE_STATE permission only on devices that run Android 10 (API level 29) and lower. --> <uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="29" /> <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> </manifest>
Ressources supplémentaires
Pour en savoir plus sur les modifications apportées aux autorisations dans Android 11, consultez les ressources suivantes :
Vidéos
Développer avec les dernières modifications de confidentialité d'Android 11