Erklären Sie den Zugriff auf vertraulichere Informationen.

Durch die Berechtigungen für Standort, Mikrofon und Kamera erhält Ihre App Zugriff auf besonders vertrauliche Nutzerdaten. 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 deine App mit Berechtigungen in Bezug auf Standort, Mikrofon und Kamera umgeht, solange du dich an die Best Practices zum Datenschutz hältst.

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

  • Warten Sie mit dem Zugriff auf die Kamera des Geräts, bis der Nutzer Ihrer App die Berechtigung CAMERA gewährt hat.
  • Warten Sie mit dem Zugriff auf das Mikrofon des Geräts, bis der Nutzer Ihrer App die Berechtigung RECORD_AUDIO gewährt hat.
  • Warten Sie, bis der Nutzer mit einer Funktion in Ihrer App interagiert, für die eine Standortermittlung 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, bevor Sie die Berechtigung ACCESS_BACKGROUND_LOCATION anfordern.

Privatsphäredashboard

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

Auf unterstützten Geräten mit Android 12 oder höher wird in den Systemeinstellungen ein Privatsphäredashboard angezeigt. Auf diesem Bildschirm können Nutzer auf separate Bildschirme zugreifen, die anzeigen, wenn Apps auf Standort-, Kamera- und Mikrofoninformationen zugreifen. Jeder Bildschirm zeigt eine Zeitachse, wann verschiedene Anwendungen auf einen bestimmten Datentyp zugegriffen haben. Abbildung 1 zeigt die Zeitachse des Datenzugriffs für 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 Privatsphäredashboard, auf dem Berechtigungsbildschirm Ihrer App oder in beiden angezeigt werden.

Gehen Sie so vor, um zu erklären, warum Ihre App auf Standort-, Kamera- und Mikrofondaten zugreift:

  1. Fügen Sie eine Aktivität hinzu, die zu Beginn eine Begründung dafür liefert, warum Ihre Anwendung eine bestimmte Art von Datenzugriffsaktion ausführt. Setze in dieser Aktivität das Attribut android:permission auf START_VIEW_PERMISSION_USAGE.

    Wenn deine App auf Android 12 oder höher ausgerichtet ist, musst du 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. Entscheiden Sie, was Ihre Begründung für den Datenzugriff anzeigen soll. Sie können beispielsweise die Website Ihrer App oder einen Hilfeartikel anzeigen. Um eine detailliertere Erklärung zu den Datentypen, auf die Ihre App zugreift, und wann der Zugriff erfolgte, gehen Sie mit den Extras um, die das System beim Aufrufen des Intents zur Berechtigungsnutzung 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 hinzufügen, der die Aktion VIEW_PERMISSION_USAGE enthält, sehen Nutzer das Symbol in den Systemeinstellungen auf der Berechtigungsseite Ihrer App. 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ündung 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 ein Symbol in der Statusleiste angezeigt, wenn eine App auf das Mikrofon oder die Kamera zugreift. 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 von Anzeigen auf dem Display ermitteln

Wenn deine App den immersiven Modus oder eine Vollbild-Benutzeroberfläche unterstützt, können sich die Indikatoren kurzzeitig mit der Benutzeroberfläche der App überschneiden. 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 bestimmen, an denen die Indikatoren angezeigt werden könnten. Dann könnten Sie beschließen, die Benutzeroberfläche Ihres Bildschirms anders zu organisieren.

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 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 auf die ein-/ausschaltbaren Optionen über die Schnelleinstellungen (siehe Abbildung 3) oder über den Datenschutzbildschirm in den Systemeinstellungen 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. Darüber hinaus 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 auf Kamera- oder Mikrofoninformationen zugreifen muss, erinnert das System den Nutzer daran, dass die Ein/Aus-Schaltfläche für das gesamte Gerät deaktiviert ist.

Gerätesupport prüfen

Wenn Sie prüfen möchten, ob ein Gerät Ein-/Aus-Schaltflächen für Mikrofon und Kamera 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);