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 angezeigt wird, wenn eine App eine private Datenquelle über die App-Berechtigungen für Kamera und Mikrofon nutzt. 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
Das sind die Anforderungen an Mikrofon- und Kamerasymbole 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 haben (z. B. 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 Benachrichtigung mit App-Attribution-Funktionen angezeigt werden, die Folgendes ermöglicht:
- Der Name der App, die das Mikrofon und/oder 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 weniger als 5 Sekunden alt sind.
- Symbole in der Statusleiste werden jedes Mal angezeigt, wenn eine App auf das Mikrofon oder die Kamera zugreift und dabei nutzerbezogene Daten erhebt.
- 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 die Schnelleinstellungen öffnet und dann auf die entsprechenden Symbole tippt, wird ein Dialogfeld angezeigt, in dem steht, ob die App die Kamera, das Mikrofon oder beides verwendet.
Abbildung 2: Indikatoren für aktive und letzte Zugriffe
Auf dem Bild in Abbildung 2 sind Indikatoren für aktiven Zugriff zu sehen, wenn in den letzten 5 Sekunden von einer laufenden App 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. Im Dialogfeld werden alle aktiven Apps angezeigt, aber nur eine App als Quelle des letzten Zugriffs, auch wenn innerhalb der letzten 15 Sekunden mehr als eine App auf Daten zugegriffen hat. Die Zugriffsdaten bleiben eingefroren, bis der Nutzer das Benachrichtigungsdialogfeld schließt.
Senden und aktivieren
Die Klasse PermissionManager
bietet eine Methode zum Ausfü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 erforderlich, da es zwei separate Lieferfahrzeuge gibt, in dieser Reihenfolge:
- 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
Der PermissionController
bietet die Möglichkeit, zu ermitteln, welche Apps Daten verwenden. 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 personenbezogene 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 stellt Daten für die App bereit.
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 das Mikrofon und die Kamera und rufen
AppOpsManager.startOp
,stopOp
und/odernoteOp
auf. Dadurch werden App-OP-Einträge auf dem Systemserver 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 nicht stummgeschaltet ist, und bei der Kameranutzung, dass die Kamera aktiviert ist), wird ein Symbol für diese Verwendung angezeigt.
Wenn die System-UI eine noteOp
ohne Dauer empfängt, wird das Symbol mindestens 5 Sekunden lang angezeigt. Andernfalls wird das Symbol entweder so lange angezeigt, bis eine stopOp
empfangen wird, oder für 5 Sekunden, je nachdem, was 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.
Auf der PermissionController
werden alle letzten Verwendungen von Mikrofon und Kamera geladen. 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 Mikrofonstack zu berücksichtigen, der bei Telefonanrufen verwendet wird, während die Android Google Search App (AGSA) und Google Mobile Services (GMS) verwendet werden.