Les autorisations d'exécution sous Android 6 et versions ultérieures permettent aux utilisateurs de contrôler quand ils autorisent l'enregistrement de l'audio du micro ou de la vidéo de l'appareil. Pour qu'une application puisse effectuer un enregistrement, un utilisateur doit accorder ou refuser son autorisation via une boîte de dialogue affichée par le système.
Android 12 offre aux utilisateurs une transparence en affichant des indicateurs lorsqu'une application utilise une source de données privée via les autorisations d'application-op pour les appareils photo et le micro. Les App-ops enregistrent les accès aux API protégées par des autorisations d'exécution.
App-op suit à la fois l'état de l'activité et le nombre d'appels d'API individuels, et interagit avec les indicateurs de micro et d'appareil photo d'Android 12 pour indiquer aux utilisateurs quand les applications ont accédé aux données audio et de l'appareil photo sur leurs appareils. Lorsque les utilisateurs cliquent sur les indicateurs du micro ou de l'appareil photo, ils voient quelles applications ont accédé à leurs données. Cette fonctionnalité est obligatoire pour tous les OEM.
Exigences de visibilité des indicateurs
Voici les exigences concernant les indicateurs de micro et d'appareil photo sur les appareils équipés d'Android 12 ou version ultérieure:
- Les indicateurs doivent apparaître dans la barre d'état et conserver la priorité visuelle la plus élevée (par exemple, en haut à droite).
- Les indicateurs doivent être situés de manière cohérente au même endroit et ne doivent pas être bloqués par une application lors de son lancement.
- Les deux indicateurs doivent être de couleur verte (ou une variation de vert).
- Le fait de cliquer sur l'un ou les deux indicateurs doit générer une notification d'affordance d'attribution d'application qui effectue les opérations suivantes :
- Indique le nom de l'application qui utilise le micro et (ou) la caméra.
- Indique le nom de l'application qui a utilisé le micro et (ou) la caméra au cours des 15 dernières secondes.
- Redirige les utilisateurs vers la page des autorisations de l'application dans Paramètres
Utilisation et fonctionnalités
Dans Android 12, l'UI fait la distinction entre les utilisations en cours d'exécution et les utilisations récentes. Les utilisations sont considérées comme actives si elles sont marquées par le système comme en cours d'exécution ou si elles ont moins de cinq secondes.
- Les icônes de la barre d'état s'affichent chaque fois qu'une application a un accès continu au micro ou à l'appareil photo, en fonction de l'utilisateur.
- Les utilisateurs peuvent cliquer sur ces icônes pour voir quelles applications accèdent au micro, à la caméra ou aux deux.
Figure 1 : Indicateurs d'utilisation du micro et de la caméra montrant un accès actif (en haut à droite)
L'accès est considéré comme actif tant que les indicateurs s'affichent. Une icône s'affiche en premier, puis passe à un point qui persiste jusqu'à ce que l'application soit fermée ou fermée.
Lorsqu'un utilisateur appuie sur les indicateurs, une boîte de dialogue s'ouvre, indiquant qu'une application utilise l'appareil photo, le micro ou les deux.
Figure 2. Indicateurs d'accès actif et récent
L'image de la figure 2 montre les indicateurs d'accès actif lorsqu'une application en cours d'exécution a accédé aux données au cours des cinq dernières secondes.
Les indicateurs d'accès récent indiquent qu'une application a accédé aux données au cours des 15 dernières secondes, mais que l'application n'est pas active. Toutes les applications actives s'affichent dans la boîte de dialogue, mais une seule application s'affiche comme source d'accès récent, même si plusieurs applications ont accédé aux données au cours d'une période de 15 secondes précédente. La vue d'accès reste figée jusqu'à ce que l'utilisateur ferme la boîte de dialogue de notification.
Envoyer et activer
La classe PermissionManager
fournit une méthode permettant de renseigner la boîte de dialogue, qui se trouve dans l'UI système.
- L'UI du système réagit à un changement de configuration de l'appareil :
privacy/mic_camera_indicators_enabled
. - Le changement est nécessaire, car il existe deux véhicules de livraison distincts, dans l'ordre suivant :
- Réalisez-la.
- Activer
- L'UI du système ne doit pas planter si la méthode de
PermissionManager
ne peut pas fournir les données nécessaires.
Déroulement du processus
L'indicateur d'autorisation comporte trois parties principales:
- Les applications
- Les indicateurs (gérés par SystemUI)
- Un moyen de déterminer quelles applications utilisent les données
PermissionController
fournit le mécanisme permettant de déterminer quelles applications utilisent les données. SystemUI écoute les applications qui utilisent des données privées. SystemUI affiche une icône dans la barre de navigation supérieure qui correspond aux autorisations utilisées. PermissionController
affiche des données sur les utilisations lorsqu'un utilisateur clique sur une icône.
Figure 3. Composants système et flux de transitions (UI)
Les transitions numérotées de la figure 3 sont décrites ci-dessous:
1- Une application demande des données privées au système.
2 : Le système vérifie les autorisations. Si les autorisations sont autorisées, le système en informe le fournisseur de données et note l'utilisation dans les app-ops.
3. Le fournisseur de données fournit les données à l'application.
4-5 L'utilisateur clique sur les icônes. L'UI du système demande des données à PermissionManager
et présente la boîte de dialogue à l'utilisateur.
Détails du processus
- Les applications utilisent le micro et la caméra, et appellent
AppOpsManager.startOp
,stopOp
et (ou)noteOp
. Cela crée des enregistrements d'opérations d'application sur le serveur système. - L'UI du système écoute les nouvelles app-ops à l'aide des écouteurs
AppOpsManager.OnOpActiveChangedInternalListener
etOnOpNotedListener
. Lorsqu'une nouvelle utilisation est reçue (via un appel àstartOp
ounoteOp
), l'UI système vérifie que l'utilisation est effectuée par une application système. - Si l'UI système vérifie l'utilisation de l'application système et si l'utilisation concerne le micro, elle vérifie si le micro est coupé.
- Si l'UI système vérifie l'utilisation d'une application non système (et, pour l'utilisation du micro, que le micro est activé, et pour l'utilisation de la caméra, que la caméra est activée), une icône correspondant à cette utilisation s'affiche.
Si l'UI système reçoit un noteOp
, qui n'a pas de durée, elle affiche l'icône pendant au moins cinq secondes. Sinon, l'icône s'affiche jusqu'à ce qu'elle reçoive un stopOp
ou pendant cinq secondes, selon la durée la plus longue. Lorsque l'utilisateur clique sur une icône, un intent est envoyé à PermissionController
pour lancer la boîte de dialogue.
PermissionController
charge toutes les utilisations récentes du micro et de la caméra. Il vérifie si l'un d'eux est en cours d'exécution ou s'il l'était au cours de la période définie par l'UI du système. Si une correspondance est trouvée, le nom de l'application qui a utilisé l'autorisation et les autorisations utilisées par l'application s'affichent.
En raison de ce changement dans Android 12 et versions ultérieures, certaines applications doivent modifier leur comportement ou implémenter un comportement spécial.
La téléphonie doit implémenter l'utilisation des autorisations (pour tenir compte de la pile de micro distincte utilisée dans les appels téléphoniques), tout en travaillant avec l'application Android Google Search (AGSA) et les services mobiles Google (GMS).