Spiegare l'accesso a informazioni più sensibili

Le autorizzazioni relative a posizione, microfono e fotocamera concedono alla tua app l'accesso a informazioni particolarmente sensibili sugli utenti. La piattaforma include diversi meccanismi, descritti in questa pagina, per aiutare gli utenti a rimanere informati e a controllare quali app possono accedere a posizione, microfono e fotocamera.

Queste funzionalità di sistema che tutelano la privacy non dovrebbero influire sul modo in cui la tua app gestisce le autorizzazioni relative a posizione, microfono e fotocamera, a condizione che tu segua le best practice per la privacy.

In particolare, assicurati di eseguire le seguenti operazioni nella tua app:

  • Attendi di accedere alla fotocamera del dispositivo finché l'utente non ha concesso l'CAMERA autorizzazione alla tua app.
  • Attendi di accedere al microfono del dispositivo finché l'utente non ha concesso l' RECORD_AUDIO alla tua app.
  • Attendi che l'utente interagisca con una funzionalità della tua app che richiede la posizione prima di richiedere l'autorizzazione ACCESS_COARSE_LOCATION o l'autorizzazione ACCESS_FINE_LOCATION, come descritto nella guida su come richiedere le autorizzazioni di localizzazione.
  • Attendi che l'utente conceda alla tua app l'autorizzazione ACCESS_COARSE_LOCATION o l'autorizzazione ACCESS_FINE_LOCATION prima di richiedere l' ACCESS_BACKGROUND_LOCATION autorizzazione.

Dashboard della privacy

Una cronologia verticale mostra le diverse app che hanno
         acceduto alle informazioni sulla posizione e l'ora in cui si sono verificati gli accessi
Figura 1. Schermata di utilizzo della posizione, parte della dashboard della privacy.

Sui dispositivi supportati con Android 12 o versioni successive, nelle impostazioni di sistema viene visualizzata una schermata della dashboard della privacy. In questa schermata, gli utenti possono accedere a schermate separate che mostrano quando le app accedono alle informazioni su posizione, fotocamera e microfono. Ogni schermata mostra una sequenza temporale di quando le diverse app hanno avuto accesso a un tipo specifico di dati. La figura 1 mostra la sequenza temporale di accesso ai dati per le informazioni sulla posizione.

Mostrare la motivazione dell'accesso ai dati

La tua app può fornire una motivazione agli utenti per aiutarli a capire perché la tua app accede alle informazioni su posizione, fotocamera o microfono. Questa motivazione può essere visualizzata nella nuova schermata della dashboard della privacy, nella schermata delle autorizzazioni dell'app o in entrambe.

Per spiegare perché la tua app accede alle informazioni su posizione, fotocamera e microfono, completa i seguenti passaggi:

  1. Aggiungi un'attività che, una volta avviata, fornisca una motivazione del perché la tua app esegue un tipo specifico di azione di accesso ai dati. All'interno di questa attività, imposta l' android:permission attributo su START_VIEW_PERMISSION_USAGE.

    Se la tua app ha come target Android 12 o versioni successive, devi definire in modo esplicito un valore per l'android:exported attributo.

  2. Aggiungi il seguente filtro per intent all'attività appena aggiunta:

    <!-- 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. Decidi cosa deve mostrare l'attività di motivazione dell'accesso ai dati. Ad esempio, potresti mostrare il sito web della tua app o un articolo del Centro assistenza. Per fornire una spiegazione più dettagliata sui tipi di dati a cui la tua app accede, nonché su quando si è verificato l'accesso, gestisci gli extra che il sistema include quando richiama l'intent di utilizzo delle autorizzazioni:

A seconda dei filtri per intent che aggiungi, gli utenti vedono un'icona informativa accanto al nome della tua app in determinate schermate:

  • Se aggiungi il filtro per intent che contiene l'VIEW_PERMISSION_USAGE azione, gli utenti vedono l'icona nella pagina delle autorizzazioni della tua app nelle impostazioni di sistema. Puoi applicare questa azione a tutte le autorizzazioni di runtime.
  • Se aggiungi il filtro per intent che contiene l'azione VIEW_PERMISSION_USAGE_FOR_PERIOD gli utenti vedono l'icona accanto al nome della tua app ogni volta che l'app viene visualizzata nella schermata della dashboard della privacy.

Quando gli utenti selezionano l'icona, viene avviata l'attività di motivazione della tua app.

Un rettangolo arrotondato nell&#39;angolo in alto a destra, che
         include un&#39;icona della videocamera e un&#39;icona del microfono
Figura 2. Indicatori di microfono e fotocamera, che mostrano accesso ai dati recenti.

Indicatori

Sui dispositivi con Android 12 o versioni successive, quando un'app accede al microfono o alla fotocamera, nella barra di stato viene visualizzata un'icona. Se l'app è in modalità immersiva, l'icona viene visualizzata in alto a destra dello schermo. Gli utenti possono aprire le Impostazioni rapide e selezionare l'icona per visualizzare le app che attualmente utilizzano il microfono o la fotocamera. La figura 2 mostra uno screenshot di esempio che contiene le icone.

Identificare la posizione degli indicatori sullo schermo

Se la tua app supporta la modalità immersiva o un'interfaccia utente a schermo intero, gli indicatori potrebbero sovrapporsi momentaneamente all'interfaccia utente dell'app. Per adattare l'interfaccia utente a questi indicatori, il sistema introduce il getPrivacyIndicatorBounds() metodo, come illustrato nel seguente snippet di codice. Utilizzando questa API, puoi identificare i limiti in cui potrebbero essere visualizzati gli indicatori. A questo punto, potresti decidere di organizzare l'interfaccia utente dello schermo in modo diverso.

Kotlin

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

Pulsanti di attivazione/disattivazione

I riquadri Impostazioni rapide sono etichettati &quot;Accesso alla fotocamera&quot; e
         &quot;Accesso al microfono&quot;.
Figura 3. Pulsanti di attivazione/disattivazione di microfono e fotocamera nelle Impostazioni rapide.

Sui dispositivi supportati con Android 12 o versioni successive, gli utenti possono attivare e disattivare l'accesso alla fotocamera e al microfono per tutte le app sul dispositivo premendo una singola opzione di attivazione/ disattivazione. Gli utenti possono accedere alle opzioni attivabili/disattivabili dalle Impostazioni rapide, come mostrato nella figura 3, o dalla schermata Privacy nelle impostazioni di sistema.

I pulsanti di attivazione/disattivazione di fotocamera e microfono interessano tutte le app sul dispositivo:

  • Quando l'utente disattiva l'accesso alla fotocamera, la tua app riceve un feed della fotocamera vuoto.
  • Quando l'utente disattiva l'accesso al microfono, la tua app riceve audio silenzioso. Inoltre, i sensori di movimento sono soggetti a limitazione della frequenza, indipendentemente dal fatto che tu dichiari l' HIGH_SAMPLING_RATE_SENSORS autorizzazione.

Quando l'utente disattiva l'accesso alla fotocamera o al microfono, quindi avvia un'app che ha bisogno di accedere alle informazioni su fotocamera o microfono, il sistema ricorda all'utente che il pulsante di attivazione/disattivazione a livello di dispositivo è disattivato.

Verificare il supporto del dispositivo

Per verificare se un dispositivo supporta i pulsanti di attivazione/disattivazione di microfono e fotocamera, aggiungi la logica che appare nel seguente snippet di codice:

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