Expliquer l'accès à des informations plus sensibles

Les autorisations associées à la localisation, au micro et à l'appareil photo permettent à votre application d'accéder à des informations particulièrement sensibles sur les utilisateurs. La plate-forme comprend plusieurs mécanismes, décrits sur cette page, pour aider les utilisateurs à suivre et à contrôler les applications autorisées à accéder à ces informations.

Ces fonctionnalités système de protection de la confidentialité ne devraient pas affecter la façon dont votre application gère les autorisations liées à la localisation, au micro et à l'appareil photo, pour autant que vous suiviez les bonnes pratiques concernant la confidentialité.

Vous devez, en particulier, veiller à respecter les règles suivantes dans votre application :

  • Attendre que l'utilisateur ait accordé l'autorisation CAMERA à votre application avant d'accéder à l'appareil photo.
  • Attendre que l'utilisateur ait accordé l'autorisation RECORD_AUDIO à votre application avant d'accéder au micro de l'appareil.
  • Attendre que l'utilisateur interagisse avec une fonctionnalité de votre application nécessitant l'activation de la géolocalisation avant de demander l'autorisation ACCESS_COARSE_LOCATION ou ACCESS_FINE_LOCATION, comme indiqué dans le guide qui explique comment demander l'autorisation d'accéder à la position.
  • Attendre que l'utilisateur accorde à votre application l'autorisation ACCESS_COARSE_LOCATION ou ACCESS_FINE_LOCATION avant de demander l'autorisation ACCESS_BACKGROUND_LOCATION.

Tableau de bord Confidentialité

Les différentes applications qui ont accédé aux informations de localisation, ainsi que l'heure des accès, sont présentées verticalement, par ordre chronologique
Figure 1. Écran d'utilisation des données de localisation faisant partie du tableau de bord Confidentialité.

Sur les appareils compatibles équipés d'Android 12 ou version ultérieure, un écran "Tableau de bord Confidentialité" est disponible dans les paramètres système. Il permet aux utilisateurs d'accéder à des écrans distincts qui s'affichent lorsque les applications accèdent aux informations concernant la localisation, au micro et à l'appareil photo. Chaque écran montre à quel moment les différentes applications ont accédé à un type de données spécifique. La figure 1 présente la chronologie d'accès aux données de localisation.

Afficher le motif d'accès aux données

Votre application peut fournir une justification aux utilisateurs pour les aider à comprendre pourquoi elle accède aux informations concernant la localisation, au micro ou à l'appareil photo. Cette justification peut être affichée sur le nouvel écran "Tableau de bord Confidentialité", sur l'écran des autorisations de votre application ou sur les deux.

Pour expliquer pourquoi votre application accède à ces informations, procédez comme suit :

  1. Ajoutez une activité qui, lorsqu'elle est lancée, explique pourquoi votre application effectue un type particulier d'accès aux données. Dans cette activité, définissez l'attribut android:permission sur START_VIEW_PERMISSION_USAGE.

    Si votre application cible Android 12 ou version ultérieure, vous devez définir explicitement une valeur pour l'attribut android:exported.

  2. Ajoutez le filtre d'intent suivant à la nouvelle activité :

    <!-- android:exported required if you target Android 12. -->
    <activity android:name=".DataAccessRationaleActivity"
              android:permission="android.permission.START_VIEW_PERMISSION_USAGE"
              android:exported="true">
           <!-- VIEW_PERMISSION_USAGE shows a selectable information icon on
                your app permission's page in system settings.
                VIEW_PERMISSION_USAGE_FOR_PERIOD shows a selectable information
                icon on the Privacy Dashboard screen. -->
        <intent-filter>
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE_FOR_PERIOD" />
           <category android:name="android.intent.category.DEFAULT" />
           ...
        </intent-filter>
    </activity>
  3. Déterminez les éléments que doit afficher votre activité de justification d'accès aux données. Vous pouvez, par exemple, afficher le site Web de votre application ou un article du centre d'aide. Pour fournir plus de détails sur les types de données auxquels votre application a accès, ainsi que la chronologie des accès, gérez les extras que le système inclut lorsqu'il appelle l'intent d'utilisation des autorisations :

En fonction des filtres d'intent que vous ajoutez, une icône d'information est affichée à côté du nom de votre application sur certains écrans :

  • Si vous ajoutez le filtre d'intent contenant l'action VIEW_PERMISSION_USAGE, l'icône est affichée sur la page des autorisations de votre application dans les paramètres système. Vous pouvez appliquer cette action à l'ensemble des autorisations d'exécution.
  • Si vous ajoutez le filtre d'intent contenant l'action VIEW_PERMISSION_USAGE_FOR_PERIOD, l'icône est affichée à côté du nom de votre application chaque fois qu'elle apparaît dans l'écran "Tableau de bord Confidentialité".

L'activité de justification de votre application est lancée lorsque l'utilisateur sélectionne cette icône.

Rectangle arrondi en haut à droite, contenant une icône d&#39;appareil photo et une icône de micro
Figure 2. Indicateurs d'accès au micro et à l'appareil photo montrant l'accès récent aux données.

Indicateurs

Sur les appareils équipés d'Android 12 ou version ultérieure, lorsqu'une application accède au micro ou à l'appareil photo, une icône s'affiche dans la barre d'état. Si l'application est en mode immersif, l'icône s'affiche en haut à droite de l'écran. Les utilisateurs peuvent ouvrir les réglages rapides et sélectionner l'icône pour voir quelles sont les applications qui utilisent actuellement le micro ou l'appareil photo. La figure 2 montre un exemple de capture d'écran contenant les icônes.

Identifier l'emplacement des indicateurs à l'écran

Si votre application prend en charge le mode immersif ou une UI plein écran, il se peut que les indicateurs recouvrent temporairement l'UI de votre application. Pour vous aider à adapter votre UI à ces indicateurs, le système propose maintenant la méthode getPrivacyIndicatorBounds(), comme le montre l'extrait de code suivant. Cette API vous permet d'identifier les limites d'affichage des indicateurs. Vous pouvez ensuite décider d'organiser différemment l'UI de votre écran.

Kotlin

view.setOnApplyWindowInsetsListener { view, windowInsets ->
    val indicatorBounds = windowInsets.getPrivacyIndicatorBounds()
    // change your UI to avoid overlapping
    windowInsets
}

Boutons d'activation/de désactivation

Les blocs &quot;Réglages rapides&quot; sont intitulés &quot;Accès à l&#39;appareil photo&quot; et &quot;Accès au micro&quot;.
Figure 3. Boutons d'activation/de désactivation de l'accès au micro et à l'appareil photo dans les réglages rapides.

Sur les appareils compatibles équipés d'Android 12 ou version ultérieure, les utilisateurs peuvent activer et désactiver l'accès à la caméra et au micro pour toutes les applications installées en appuyant simplement sur un bouton. Les utilisateurs peuvent accéder aux options d'activation/de désactivation à partir des Réglages rapides, comme illustré à la figure 3, ou à partir de l'écran "Confidentialité" des paramètres système.

Les boutons d'activation/de désactivation de l'accès à l'appareil photo et au micro affectent toutes les applications installées sur l'appareil :

  • Lorsque l'utilisateur désactive l'accès à l'appareil photo, votre application reçoit un flux d'appareil photo vide.
  • Lorsque l'utilisateur désactive l'accès au micro, votre application reçoit un flux audio silencieux. De plus, le débit des capteurs de mouvement est limité, et ce, que vous déclariez ou non l'autorisation HIGH_SAMPLING_RATE_SENSORS.

Lorsque l'utilisateur désactive l'accès à l'appareil photo ou au micro, puis lance une application qui doit accéder à ces informations, le système lui rappelle que l'option correspondante est désactivée au niveau de l'appareil.

Vérifier la compatibilité de l'appareil

Pour vérifier si un appareil prend en charge l'activation/la désactivation de l'accès au micro et à l'appareil photo, ajoutez la logique indiquée dans l'extrait de code suivant :

Kotlin

val sensorPrivacyManager = applicationContext
        .getSystemService(SensorPrivacyManager::class.java)
        as SensorPrivacyManager
val supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE)
val supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA)

Java

SensorPrivacyManager sensorPrivacyManager = getApplicationContext()
        .getSystemService(SensorPrivacyManager.class);
boolean supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE);
boolean supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA);