Erklären Sie den Zugriff auf vertraulichere Informationen.

Die Berechtigungen für Standort, Mikrofon und Kamera gewähren deiner App Zugriff auf besonders vertrauliche Informationen über Nutzer. Die Plattform umfasst mehrere Mechanismen, die auf dieser Seite beschrieben werden, damit Nutzer informiert bleiben und die Kontrolle darüber behalten, welche Apps auf Standort, Mikrofon und Kamera zugreifen können.

Diese datenschutzfreundlichen Systemfunktionen sollten sich nicht darauf auswirken, wie Ihre App die Berechtigungen für Standort, Mikrofon und Kamera verarbeitet, solange Sie die Best Practices für den Datenschutz befolgen.

Achten Sie insbesondere darauf, dass Sie in Ihrer App Folgendes tun:

  • Warte mit dem Zugriff auf die Kamera des Geräts, bis der Nutzer deiner App die Berechtigung CAMERA erteilt hat.
  • Warte mit dem Zugriff auf das Mikrofon des Geräts, bis der Nutzer deiner App die Berechtigung RECORD_AUDIO gewährt hat.
  • Warten Sie, bis der Nutzer mit einer Funktion in Ihrer App interagiert, für die der Standort erforderlich ist, bevor Sie die Berechtigung ACCESS_COARSE_LOCATION oder ACCESS_FINE_LOCATION anfordern, wie im Leitfaden zum Anfordern von Berechtigungen zur Standortermittlung beschrieben.
  • Warte, bis der Nutzer deiner App entweder die Berechtigung ACCESS_COARSE_LOCATION oder die Berechtigung ACCESS_FINE_LOCATION erteilt hat, bevor du die Berechtigung ACCESS_BACKGROUND_LOCATION anforderst.

Privatsphäredashboard

Eine vertikale Zeitachse zeigt die verschiedenen Apps, die auf Standortinformationen zugegriffen haben, und den Zeitpunkt des Zugriffs.
Abbildung 1: Bildschirm zur Standortnutzung, Teil des Privatsphäre-Dashboards.

Auf unterstützten Geräten mit Android 12 oder höher wird in den Systemeinstellungen ein Privatsphäre-Dashboard angezeigt. Auf diesem Bildschirm können Nutzer auf separate Bildschirme zugreifen, auf denen angezeigt wird, wann Apps auf Standort-, Kamera- und Mikrofoninformationen zugreifen. Auf jedem Bildschirm wird eine Zeitachse angezeigt, auf der zu sehen ist, wann verschiedene Apps auf einen bestimmten Datentyp zugegriffen haben. Abbildung 1 zeigt die Zeitachse für den Datenzugriff auf Standortinformationen.

Begründung für den Datenzugriff anzeigen

In Ihrer App können Sie Nutzern erklären, warum sie auf Standort-, Kamera- oder Mikrofoninformationen zugreift. Diese Begründung kann auf dem neuen Bildschirm „Privatsphäre-Dashboard“, auf dem Bildschirm „Berechtigungen“ Ihrer App oder auf beiden angezeigt werden.

So erklären Sie, warum Ihre App auf Standort-, Kamera- und Mikrofoninformationen zugreift:

  1. Fügen Sie eine Aktivität hinzu, die beim Starten eine Begründung dafür liefert, warum Ihre App eine bestimmte Art von Datenzugriffsaktion ausführt. Legen Sie in dieser Aktivität das Attribut android:permission auf START_VIEW_PERMISSION_USAGE fest.

    Wenn Ihre App auf Android 12 oder höher ausgerichtet ist, müssen Sie explizit einen Wert für das Attribut android:exported definieren.

  2. Fügen Sie der neu hinzugefügten Aktivität den folgenden Intent-Filter hinzu:

    <!-- 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. Legen Sie fest, was in der Aktivität zur Begründung des Datenzugriffs angezeigt werden soll. Sie können beispielsweise die Website Ihrer App oder einen Hilfeartikel einblenden. Wenn du eine detailliertere Erklärung zu den Datentypen, auf die deine App zugreift, und zum Zeitpunkt des Zugriffs bereitstellen möchtest, verarbeite die Extras, die das System beim Aufrufen des Intents zur Berechtigungsnutzung enthält:

Je nachdem, welche Intent-Filter du hinzufügst, sehen Nutzer auf bestimmten Bildschirmen ein Informationssymbol neben dem Namen deiner App:

  • Wenn Sie den Intent-Filter mit der Aktion VIEW_PERMISSION_USAGE hinzufügen, sehen Nutzer das Symbol auf der Berechtigungsseite Ihrer App in den Systemeinstellungen. Sie können diese Aktion auf alle Laufzeitberechtigungen anwenden.
  • Wenn du den Intent-Filter mit der Aktion VIEW_PERMISSION_USAGE_FOR_PERIOD hinzufügst, sehen Nutzer das Symbol neben dem Namen deiner App, wenn deine App auf dem Bildschirm „Privatsphäre-Dashboard“ angezeigt wird.

Wenn Nutzer dieses Symbol auswählen, wird die Aktivität mit der Begründung Ihrer App gestartet.

Ein abgerundetes Rechteck in der oberen rechten Ecke, das ein Kamerasymbol und ein Mikrofonsymbol enthält
Abbildung 2. Mikrofon- und Kameraanzeigen, die den letzten Datenzugriff anzeigen.

Indikatoren

Wenn eine App auf Geräten mit Android 12 oder höher auf das Mikrofon oder die Kamera zugreift, wird in der Statusleiste ein Symbol angezeigt. Wenn sich die App im immersiven Modus befindet, wird das Symbol oben rechts auf dem Bildschirm angezeigt. Nutzer können die Schnelleinstellungen öffnen und das Symbol auswählen, um zu sehen, welche Apps gerade das Mikrofon oder die Kamera verwenden. Abbildung 2 zeigt einen Beispiel-Screenshot mit den Symbolen.

Position der Anzeigen auf dem Bildschirm ermitteln

Wenn deine App den immersiven Modus oder eine Vollbild-UI unterstützt, können die Anzeigen die UI deiner App vorübergehend überlagern. Damit Sie Ihre Benutzeroberfläche an diese Indikatoren anpassen können, wird die Methode getPrivacyIndicatorBounds() eingeführt, die im folgenden Code-Snippet veranschaulicht wird. Mit dieser API können Sie die Grenzen ermitteln, innerhalb derer die Indikatoren angezeigt werden können. Sie können dann die Benutzeroberfläche Ihres Bildschirms anders organisieren.

Kotlin

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

Toggles

Die Schnelleinstellungen-Kacheln sind mit „Kamerazugriff“ und „Mikrofonzugriff“ beschriftet.
Abbildung 3. Ein/Aus-Schaltflächen für Mikrofon und Kamera in den Schnelleinstellungen

Auf unterstützten Geräten mit Android 12 oder höher können Nutzer den Kamera- und Mikrofonzugriff für alle Apps auf dem Gerät aktivieren und deaktivieren, indem sie eine einzige Umschaltoption drücken. Nutzer können die umschaltbaren Optionen über die Schnelleinstellungen (siehe Abbildung 3) oder über den Bildschirm „Datenschutz“ in den Systemeinstellungen aufrufen.

Die Ein/Aus-Schaltflächen für Kamera und Mikrofon wirken sich auf alle Apps auf dem Gerät aus:

  • Wenn der Nutzer den Kamerazugriff deaktiviert, erhält Ihre App einen leeren Kamerafeed.
  • Wenn der Nutzer den Mikrofonzugriff deaktiviert, empfängt Ihre App keine Audiodaten. Außerdem ist die Rate für Bewegungssensoren begrenzt, unabhängig davon, ob du die Berechtigung HIGH_SAMPLING_RATE_SENSORS deklarierst.

Wenn der Nutzer den Zugriff auf die Kamera oder das Mikrofon deaktiviert und dann eine App startet, die Zugriff auf Kamera- oder Mikrofoninformationen benötigt, wird er vom System daran erinnert, dass die geräteweite Einstellung deaktiviert ist.

Geräteunterstützung prüfen

Wenn du prüfen möchtest, ob ein Gerät die Ein/Aus-Schaltflächen für Mikrofon und Kamera unterstützt, füge die Logik aus dem folgenden Code-Snippet hinzu:

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);