Mit Laufzeitberechtigungen in Android 6 und höher können Nutzer festlegen, wann Audio vom Mikrofon oder Video von der Kamera eines Geräts aufgezeichnet werden darf. Bevor eine App aufzeichnen kann, muss ein Nutzer ihr über ein Dialogfeld des Systems entweder die Berechtigung erteilen oder verweigern.
Android 12 bietet Nutzern Transparenz, indem Indikatoren angezeigt werden, wenn eine App eine private Datenquelle über die App-Berechtigungen für Kameras und Mikrofone verwendet. App-Ops erfassen Zugriffe auf APIs, die durch Laufzeitberechtigungen geschützt sind.
App-Op erfasst sowohl den Aktivitätsstatus als auch die Anzahl der einzelnen API-Aufrufe und interagiert mit den Mikrofon- und Kamerasymbolen in Android 12, um Nutzern zu zeigen, wann Apps auf Audio- und Kameradaten auf ihren Geräten zugegriffen haben. Wenn Nutzer auf die Mikrofon- oder Kamerasymbole klicken, sehen sie, welche Apps auf ihre Daten zugegriffen haben. Diese Funktion ist für alle OEMs obligatorisch.
Anforderungen an die Sichtbarkeit von Indikatoren
Dies sind die Anforderungen für Mikrofon- und Kameraanzeigen auf Geräten mit Android 12 oder höher:
- Die Indikatoren müssen in der Statusleiste angezeigt werden und die höchste visuelle Priorität beibehalten, z. B. an der Position ganz rechts oben.
- Die Indikatoren müssen sich immer an derselben Position befinden und dürfen beim Starten einer App nicht von dieser blockiert werden.
- Beide Indikatoren müssen grün (oder eine Grünschattierung) sein.
- Wenn Sie auf einen oder beide Indikatoren klicken, muss eine App-Attributions-Affordance-Benachrichtigung angezeigt werden, die Folgendes tut:
- Zeigt den Namen der App an, die das Mikrofon und die Kamera verwendet
- Der Name der App, die in den letzten 15 Sekunden das Mikrofon und/oder die Kamera verwendet hat.
- Nutzer werden in den Einstellungen zur Seite mit den App-Berechtigungen weitergeleitet.
Nutzung und Funktionen
In Android 12 wird in der Benutzeroberfläche zwischen laufenden und letzten Nutzungen unterschieden. Nutzungen gelten als aktiv, wenn sie entweder vom System als aktiv gekennzeichnet sind oder jünger als 5 Sekunden sind.
- Symbole in der Statusleiste werden jedes Mal angezeigt, wenn eine App den Zugriff auf das Mikrofon oder die Kamera für eine nutzersensible Funktion nutzt.
- Nutzer können auf diese Symbole klicken, um zu sehen, welche Apps auf das Mikrofon, die Kamera oder beide zugreifen.
Abbildung 1: Mikrofon- und Kameranutzungsanzeigen, die den aktiven Zugriff anzeigen (oben rechts)
Der Zugriff gilt so lange als aktiv, wie die Indikatoren angezeigt werden. Zuerst wird ein Symbol angezeigt, das dann in einen Punkt übergeht, der so lange sichtbar bleibt, bis die App minimiert oder geschlossen wird.
Wenn ein Nutzer auf die Indikatoren tippt, wird ein Dialogfeld geöffnet, in dem angezeigt wird, dass eine App die Kamera, das Mikrofon oder beides verwendet.
Abbildung 2: Indikatoren für aktive und letzte Zugriffe
Die Abbildung in Abbildung 2 zeigt Indikatoren für aktiven Zugriff, wenn in den letzten 5 Sekunden von einer laufenden Anwendung auf Daten zugegriffen wurde.
Indikatoren für den letzten Zugriff zeigen an, dass in den letzten 15 Sekunden eine App auf Daten zugegriffen hat, aber nicht aktiv ist. Alle aktiven Apps werden im Dialogfeld angezeigt, aber nur eine App wird als Quelle des letzten Zugriffs angezeigt, auch wenn innerhalb eines Zeitraums von 15 Sekunden mehr als eine App auf Daten zugegriffen hat. Die Zugriffsansicht bleibt eingefroren, bis der Nutzer das Benachrichtigungsdialogfeld schließt.
Bereitstellen und aktivieren
Die Klasse PermissionManager
bietet eine Methode zum Füllen des Dialogfelds, das sich in der System-UI befindet.
- Die System-UI reagiert auf einen Gerätekonfigurationswechsel:
privacy/mic_camera_indicators_enabled
. - Der Wechsel ist notwendig, weil es zwei separate Lieferfahrzeuge in dieser Reihenfolge gibt:
- Senden Sie die Antwort.
- Aktivieren
- Die System-UI darf nicht abstürzen, wenn die Methode in
PermissionManager
die erforderlichen Daten nicht bereitstellen kann.
Prozessablauf
Die Funktion „Berechtigungsanzeige“ besteht aus drei Hauptteilen:
- Die Apps
- Die Indikatoren (von SystemUI verwaltet)
- Eine Möglichkeit, herauszufinden, welche Apps die Daten verwenden
Mit der PermissionController
können Sie ermitteln, welche Apps Daten verwenden. Die SystemUI überwacht Apps, die private Daten verwenden. Die SystemUI zeigt in der oberen Navigationsleiste ein Symbol für die verwendeten Berechtigungen an. Der Messwert PermissionController
enthält Daten zur Nutzung, wenn ein Nutzer auf ein Symbol klickt.
Abbildung 3 Systemkomponenten und (UI-)Übergänge
Die nummerierten Übergänge in Abbildung 3 werden unten beschrieben:
1: Eine App fordert private Daten vom System an.
2: Das System prüft die Berechtigungen. Wenn die Berechtigungen zulässig sind, benachrichtigt das System den Datenanbieter und protokolliert die Nutzung in App-Ops.
3- Der Datenanbieter übermittelt Daten an die App.
4–5 Der Nutzer klickt auf die Symbole. Die System-UI fordert Daten von der PermissionManager
an und zeigt dem Nutzer das Dialogfeld an.
Verarbeitungsdetails
- Apps verwenden Mikrofon und Kamera und rufen
AppOpsManager.startOp
,stopOp
und (oder)noteOp
auf. Dadurch werden auf dem Systemserver Datensätze zu Anwendungsvorgängen erstellt. - Die System-UI überwacht mit den
AppOpsManager.OnOpActiveChangedInternalListener
- undOnOpNotedListener
-Listenern neue App-Vorgänge. Wenn eine neue Nutzung erkannt wird (über einen Aufruf vonstartOp
odernoteOp
), prüft die System-UI, ob die Nutzung von einer System-App stammt. - Wenn die System-UI die Nutzung einer System-App überprüft und die Nutzung das Mikrofon betrifft, prüft die System-UI, ob das Mikrofon stummgeschaltet ist.
- Wenn die System-UI die Verwendung einer nicht systemeigenen App bestätigt (und bei der Mikrofonnutzung, dass das Mikrofon aktiviert ist, und bei der Kameranutzung, dass die Kamera aktiviert ist), wird ein Symbol für diese Verwendung angezeigt.
Wenn die System-UI eine noteOp
empfängt, die keine Dauer hat, wird das Symbol mindestens 5 Sekunden lang angezeigt. Andernfalls wird das Symbol entweder so lange angezeigt, bis es ein stopOp
empfängt, oder für 5 Sekunden, je nachdem, welcher Zeitraum länger ist. Wenn der Nutzer auf ein Symbol klickt, wird eine Absicht gestartet, die an die PermissionController
gesendet wird, um den Dialog zu starten.
PermissionController
lädt die gesamte letzte Nutzung des Mikrofons und der Kamera. Es wird geprüft, ob einer dieser Prozesse ausgeführt wird oder innerhalb des von der Systemoberfläche festgelegten Zeitraums ausgeführt wurde. Wenn eine Übereinstimmung gefunden wird, werden der Name der App, die die Berechtigung verwendet hat, und die verwendeten Berechtigungen angezeigt.
Aufgrund dieser Änderung in Android 12 und höher müssen einige Apps entweder ihr Verhalten ändern oder ein spezielles Verhalten implementieren.
Für die Telefonie muss die Berechtigungsnutzung implementiert werden, um den separaten Mikrofon-Stack zu berücksichtigen, der bei Telefonanrufen verwendet wird, während die Android Google Search App (AGSA) und Google Mobile Services (GMS) verwendet werden.