Mise à jour des autorisations dans Android 11

Android 11 permet aux utilisateurs de spécifier des valeurs plus précises autorisations d'accès à la position, au micro et à l'appareil photo. De plus, le système réinitialise les autorisations des applications inutilisées qui ciblent Android 11 ou et les autorisations déclarées devront peut-être mettre à jour utiliser la fenêtre d'alerte système ou lire les informations liées aux numéros de téléphone.

Autorisations ponctuelles

À partir d'Android 11, chaque fois que votre application demande une autorisation associées à la position, 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 opérations ponctuelles autorisations.

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 un certain temps mois, le système protège les données utilisateur en réinitialisant les autorisations d'exécution que l'utilisateur a accordées à votre application. Cette action a le même comme si l'utilisateur avait affiché une autorisation dans les paramètres système et modifié votre niveau d'accès de l'application sur Deny (Refuser). Si votre application respecte les bonnes pratiques demander des autorisations au moment de l'exécution, vous vous ne devriez pas avoir à modifier votre application. C'est parce que, comme l'utilisateur interagit avec les fonctionnalités de votre application, vérifiez que celles-ci ont les autorisations dont ils ont besoin.

Découvrez comment le système réinitialise automatiquement les autorisations applications.

Visibilité de la boîte de dialogue d'autorisation

À partir d'Android 11, si l'utilisateur appuie sur Refuser pour un une autorisation spécifique plus d'une fois pendant toute la durée d'installation de votre application sur un appareil, l'utilisateur ne voit 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 déconseille les demandes répétées d'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

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.

Pendant les tests, il peut être utile de réinitialiser ces indicateurs pour vous assurer que les testeurs 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 l'API d'autorisations la page de référence.

Découvrez comment gérer les autorisations refus dans votre application.

Modifications de la fenêtre d'alerte système

Android 11 apporte plusieurs modifications à la façon dont les applications se voient accorder le SYSTEM_ALERT_WINDOW l'autorisation. Ces modifications visent à protéger les utilisateurs accorder des autorisations plus intentionnelles.

L'autorisation SYSTEM_ALERT_WINDOW est automatiquement accordée à certaines applis sur demande

Certaines classes d'applications se voient automatiquement attribuer le rôle SYSTEM_ALERT_WINDOW. autorisation sur demande:

  • Toute application qui a ROLE_CALL_SCREENING et demande SYSTEM_ALERT_WINDOW obtient automatiquement l'autorisation. Si l'application perd l'autorisation ROLE_CALL_SCREENING.

  • Toute application qui capture l'écran via un MediaProjection et demande SYSTEM_ALERT_WINDOW obtient automatiquement l'autorisation sauf si l'utilisateur a explicitement refusé l'autorisation à l'application. Lorsque l'application cesse de capturer l'écran, il perd l'autorisation. Ce cas d'utilisation concerne principalement destiné aux applications de streaming en direct de jeux.

Ces applis n'ont pas besoin d'envoyer ACTION_MANAGE_OVERLAY_PERMISSION pour obtenir l'autorisation SYSTEM_ALERT_WINDOW. les applications peuvent simplement demander SYSTEM_ALERT_WINDOW.

Les intents MANAGE_OVERLAY_PERMISSION redirigent toujours l'utilisateur vers l'écran des autorisations système

À partir d'Android 11, ACTION_MANAGE_OVERLAY_PERMISSION les intents redirigent toujours l'utilisateur vers l'écran Paramètres de premier niveau, où utilisateur peut accorder ou révoquer l'accès SYSTEM_ALERT_WINDOW autorisations 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 pourrait spécifier un package, ce qui dirigerait l'utilisateur vers un écran spécifique à l'application pour gérer les autorisations. Cette fonctionnalité n'est plus disponible depuis le Android 11. L'utilisateur doit d'abord sélectionner l'application de son choix. accorder ou révoquer l'autorisation. Ce changement vise à protéger les utilisateurs en faisant en sorte que l’autorisation accorde une autorisation plus intentionnelle.

Numéros de téléphone

Android 11 modifie les autorisations liées 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 a besoin d'accéder à la de numéros de téléphone figurant dans la liste suivante, vous devez demander le READ_PHONE_NUMBERS au lieu de l'autorisation READ_PHONE_STATE.

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 Versions d'Android Si vous n'utilisez l'autorisation READ_PHONE_STATE que pour les de la liste précédente, mettez à jour votre fichier manifeste comme suit:

  1. Modifiez la déclaration de READ_PHONE_STATE afin que votre application utilise le autorisation uniquement sur Android 10 (niveau d'API 29) ou version antérieure.
  2. 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 le les ressources suivantes:

Vidéos

Développer votre application en tenant compte des derniers changements concernant la confidentialité Android 11