Erklären Sie den Zugriff auf vertraulichere Informationen.

Die Berechtigungen für Standort, Mikrofon und Kamera gewähren Ihrer App Zugriff auf besonders vertrauliche Daten von Nutzern. Die Plattform umfasst mehrere Mechanismen, die auf dieser Seite beschrieben werden. Sie sollen Nutzern dabei helfen, auf dem Laufenden zu bleiben und zu steuern, welche Apps auf Standort, Mikrofon und Kamera zugreifen können.

Diese datenschutzfreundlichen Systemfunktionen sollten sich nicht darauf auswirken, wie Ihre App mit den Berechtigungen für Standort, Mikrofon und Kamera umgeht, sofern Sie die Best Practices für den Datenschutz einhalten.

Achten Sie insbesondere auf Folgendes:

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

Privatsphäredashboard

Eine vertikale Zeitachse zeigt die verschiedenen Apps, die auf Standortinformationen zugegriffen haben, und wann die Zugriffe stattgefunden haben.
Abbildung 1: Bildschirm zur Standortnutzung, Teil des Datenschutzdashboards

Auf unterstützten Geräten mit Android 12 oder höher wird in den Systemeinstellungen ein Datenschutz-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 Datenzugriff anzeigen

Deine App kann Nutzern eine Begründung liefern, um zu verstehen, warum sie auf Standort-, Kamera- oder Mikrofondaten zugreift. Diese Begründung kann auf dem neuen Bildschirm des Datenschutzdashboards, auf dem Berechtigungsbildschirm Ihrer App oder auf beiden angezeigt werden.

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

  1. Fügen Sie eine Aktivität hinzu, die beim Starten einen Grund 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 ausdrücklich einen Wert für das android:exported-Attribut 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 Aktivität als Begründung für den Datenzugriff angezeigt werden soll. Sie können beispielsweise die Website Ihrer App oder einen Hilfeartikel angeben. Wenn Sie eine detailliertere Erklärung zu den Datentypen, auf die Ihre App zugreift, sowie zum Zeitpunkt des Zugriffs angeben möchten, müssen Sie die Extras verarbeiten, die das System beim Aufrufen der Berechtigungsnutzungsabsicht einschließt:

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

  • Wenn Sie den Intent-Filter mit der Aktion VIEW_PERMISSION_USAGE hinzufügen, sehen Nutzer das Symbol in den Systemeinstellungen auf der Seite „Berechtigungen“ Ihrer App. Sie können diese Aktion auf alle Laufzeitberechtigungen anwenden.
  • Wenn Sie den Intent-Filter mit der Aktion VIEW_PERMISSION_USAGE_FOR_PERIOD hinzufügen, sehen Nutzer das Symbol neben dem Namen Ihrer App, wenn Ihre App auf dem Bildschirm „Datenschutz-Dashboard“ angezeigt wird.

Wenn Nutzer dieses Symbol auswählen, wird die rationale Aktivität Ihrer App gestartet.

Ein abgerundetes Rechteck oben rechts mit einem Kamera- und einem Mikrofonsymbol
Abbildung 2: Mikrofon- und Kameraanzeigen, die den letzten Datenzugriff anzeigen.

Kennzeichnung

Wenn auf Geräten mit Android 12 oder höher eine App 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 derzeit das Mikrofon oder die Kamera verwenden. Abbildung 2 zeigt einen Beispielscreenshot mit den Symbolen.

Position der Anzeigen auf dem Display

Wenn Ihre App den immersiven Modus oder eine Vollbild-Benutzeroberfläche unterstützt, überlappen sich die Indikatoren möglicherweise kurzzeitig mit der Benutzeroberfläche Ihrer App. Damit die UI an diese Indikatoren angepasst werden kann, führt das System die Methode getPrivacyIndicatorBounds() ein, die im folgenden Code-Snippet demonstriert wird. Mit dieser API können Sie die Grenzen festlegen, in denen die Anzeigen erscheinen können. Sie können dann entscheiden, die Benutzeroberfläche des Bildschirms anders zu organisieren.

Kotlin

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

Toggles

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 Kamera- und Mikrofonzugriff für alle Apps auf dem Gerät durch Drücken einer einzigen Ein/Aus-Schaltfläche aktivieren und deaktivieren. Nutzer können über die Schnelleinstellungen (siehe Abbildung 3) oder über den Datenschutzbildschirm in den Systemeinstellungen auf die Optionen zugreifen.

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 stumme Audiodaten. Außerdem sind Bewegungssensoren frequenzbeschränkt, unabhängig davon, ob Sie die Berechtigung HIGH_SAMPLING_RATE_SENSORS angeben.

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

Gerätesupport prüfen

Wenn Sie prüfen möchten, ob ein Gerät die Mikrofon- und Kameraschalter unterstützt, fügen Sie 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);