Erklären Sie den Zugriff auf vertraulichere Informationen.

Die Berechtigungen für Standort, Mikrofon und Kamera gewähren deiner App Zugriff auf besonders vertrauliche Daten über Nutzer. Die Plattform umfasst mehrere auf dieser Seite beschriebene Mechanismen, mit denen Nutzer auf dem Laufenden bleiben und die Kontrolle darüber haben, welche Apps auf den Standort, das Mikrofon und die Kamera zugreifen können.

Diese datenschutzfreundlichen Systemfunktionen sollten sich nicht darauf auswirken, wie deine App mit Berechtigungen für Standort, Mikrofon und Kamera umgeht, solange du die Best Practices zum Datenschutz befolgst.

Führen Sie in Ihrer App insbesondere folgende Schritte aus:

  • Zugriff auf die Kamera des Geräts erst dann, wenn der Nutzer der App die Berechtigung CAMERA gewährt hat
  • Warten Sie mit dem Zugriff auf das Mikrofon des Geräts, bis der Nutzer der 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 in der Anleitung zum Anfordern von Berechtigungen zur Standortermittlung beschrieben.
  • Warten Sie, bis der Nutzer Ihrer App die Berechtigung ACCESS_COARSE_LOCATION oder ACCESS_FINE_LOCATION gewährt hat, bevor Sie die Berechtigung ACCESS_BACKGROUND_LOCATION anfordern.

Privatsphäredashboard

Eine vertikale Zeitachse mit den verschiedenen Apps, die auf Standortinformationen zugegriffen haben, und dem Zeitpunkt der Zugriffe
Abbildung 1: Bildschirm „Standortnutzung“, der Teil des Privatsphäredashboard ist.

Auf unterstützten Geräten mit Android 12 oder höher wird in den Systemeinstellungen der Bildschirm „Privatsphäredashboard“ angezeigt. Auf diesem Bildschirm können Nutzer separate Bildschirme aufrufen, auf denen angezeigt wird, wenn Apps auf Standort-, Kamera- und Mikrofoninformationen zugreifen. Auf jedem Bildschirm wird eine Zeitachse angezeigt, die Aufschluss darüber gibt, wann verschiedene Apps auf einen bestimmten Datentyp zugegriffen haben. Abbildung 1 zeigt die Zeitachse für den Datenzugriff für Standortinformationen.

Begründung für Datenzugriff anzeigen

Ihre App kann Nutzern eine Begründung liefern, warum sie auf Standort-, Kamera- oder Mikrofoninformationen zugreift. Diese Begründung kann auf dem neuen Bildschirm „Privatsphäredashboard“, auf dem Bildschirm mit den Berechtigungen Ihrer App oder in beiden angezeigt werden.

Führen Sie die folgenden Schritte aus, um zu erklären, warum Ihre App auf Standort-, Kamera- und Mikrofoninformationen zugreift:

  1. Fügen Sie eine Aktivität hinzu, die zu Beginn einige Gründe dafür bietet, warum Ihre App eine bestimmte Art von Datenzugriffsaktion ausführt. Setze in dieser Aktivität das Attribut android:permission auf START_VIEW_PERMISSION_USAGE.

    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, welche Begründung für den Datenzugriff angezeigt werden soll. Dabei kann es sich z. B. um die Website deiner App oder einen Hilfeartikel handeln. Um eine detailliertere Erklärung zu den Datentypen, auf die Ihre App zugreift, und zum Zeitpunkt des Zugriffs zu geben, sollten Sie die Extras verarbeiten, die das System beim Aufrufen des Intents für die Nutzung der Berechtigung enthält:

Je nachdem, welche Intent-Filter Sie hinzufügen, sehen Nutzer auf bestimmten Bildschirmen ein Informationssymbol neben dem Namen Ihrer App:

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

Wenn Nutzer dieses Symbol auswählen, wird die Begründungsaktivität Ihrer App gestartet.

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

Kennzeichnung

Auf Geräten mit Android 12 oder höher wird in der Statusleiste ein Symbol angezeigt, wenn eine App auf das Mikrofon oder die Kamera zugreift. Wenn die App im immersiven Modus ausgeführt wird, wird das Symbol rechts oben auf dem Bildschirm angezeigt. Über das Symbol in den Schnelleinstellungen sehen Sie, welche Apps gerade das Mikrofon oder die Kamera verwenden. Abbildung 2 zeigt einen Beispiel-Screenshot, der die Symbole enthält.

Position der Anzeigen auf dem Bildschirm bestimmen

Wenn Ihre App den immersiven Modus oder eine Vollbild-UI unterstützt, können sich die Indikatoren vorübergehend mit der Benutzeroberfläche Ihrer App überschneiden. Damit Sie die UI leichter an diese Indikatoren anpassen können, führt das System die Methode getPrivacyIndicatorBounds() ein, die im folgenden Code-Snippet veranschaulicht wird. Mit dieser API können Sie die Grenzen identifizieren, an denen die Indikatoren erscheinen können. Dann könnten Sie die Benutzeroberfläche Ihres Bildschirms anders anordnen.

Kotlin

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

Ein/Aus-Schaltfläche

Die Kacheln für Schnelleinstellungen 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 Zugriff auf Kamera und Mikrofon für alle Apps auf dem Gerät durch Drücken einer Ein-/Aus-Schaltfläche aktivieren und deaktivieren. Nutzer können die Umschaltoptionen über die Schnelleinstellungen (siehe Abbildung 3) oder über den Datenschutzbildschirm 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 deine App stummes Audio. Außerdem sind Bewegungssensoren ratenbegrenzt, unabhängig davon, ob Sie die Berechtigung HIGH_SAMPLING_RATE_SENSORS deklarieren.

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, erinnert das System den Nutzer daran, dass die Ein/Aus-Schaltfläche für das gesamte Gerät deaktiviert ist.

Gerätesupport prüfen

Um zu prüfen, ob ein Gerät Ein-/Aus-Schaltflächen für Mikrofon und Kamera unterstützt, fügen Sie die im folgenden Code-Snippet angezeigte Logik 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);