Spiegare l'accesso a informazioni più sensibili

Le autorizzazioni relative alla posizione, al microfono e alla 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 incentrate sulla tutela della privacy non dovrebbero influire sul modo in cui l'app gestisce le autorizzazioni relative a posizione, microfono e fotocamera, se segui le best practice per la privacy.

In particolare, assicurati di svolgere le seguenti operazioni nell'app:

  • Attendi l'accesso alla fotocamera del dispositivo finché l'utente non ha concesso l'autorizzazione CAMERA alla tua app.
  • Attendi l'accesso al microfono del dispositivo finché l'utente non ha concesso l'autorizzazione 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 accesso alla posizione.
  • Attendi che l'utente conceda alla tua app l'autorizzazione ACCESS_COARSE_LOCATION o l'autorizzazione ACCESS_FINE_LOCATION prima di richiedere l'autorizzazione ACCESS_BACKGROUND_LOCATION.

Dashboard della privacy

Una sequenza temporale verticale mostra le diverse app che hanno avuto accesso alle informazioni sulla posizione e l'ora in cui si sono verificati gli accessi
Figura 1. Schermata 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 Dashboard della privacy. In questa schermata, gli utenti possono accedere a schermate separate che mostrano quando le app accedono a informazioni su posizione, fotocamera e microfono. Ogni schermata mostra una sequenza temporale dei momenti in cui diverse app hanno eseguito l'accesso a un determinato tipo di dati. La Figura 1 mostra la cronologia di accesso ai dati per le informazioni sulla posizione.

Mostra la motivazione dell'accesso ai dati

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

Per spiegare il motivo per cui l'app accede a informazioni su posizione, fotocamera e microfono, completa i seguenti passaggi:

  1. Aggiungi un'attività che, all'avvio, fornisca una motivazione per cui la tua app esegue un particolare tipo di azione di accesso ai dati. In questa attività, imposta l'attributo android:permission su START_VIEW_PERMISSION_USAGE.

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

  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 mostrare per la tua attività relativa alla 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 accede l'app, nonché su quando si è verificato l'accesso, gestisci gli extra inclusi dal sistema quando richiama l'intento di utilizzo delle autorizzazioni:

A seconda dei filtri per intent aggiunti, gli utenti vedono un'icona delle informazioni accanto al nome della tua app in determinate schermate:

  • Se aggiungi il filtro per intent che contiene l'azione VIEW_PERMISSION_USAGE, gli utenti vedranno 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 vedranno l'icona accanto al nome dell'app ogni volta che quest'ultima viene visualizzata nella schermata della dashboard della privacy.

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

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

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 nell'angolo in alto a destra dello schermo. Gli utenti possono aprire le Impostazioni rapide e selezionare l'icona per vedere quali app stanno usando 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 una UI a schermo intero, gli indicatori potrebbero sovrapporsi temporaneamente all'UI dell'app. Per aiutarti ad adattare la tua UI a questi indicatori, il sistema introduce il metodo getPrivacyIndicatorBounds(), dimostrato dal seguente snippet di codice. Utilizzando questa API, puoi identificare i limiti in cui potrebbero essere visualizzati gli indicatori. Potresti quindi 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 delle Impostazioni rapide sono etichettati come &quot;Accesso alla fotocamera&quot; e &quot;Accesso al microfono&quot;
Figura 3. Attiva/disattiva 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 un'unica opzione di attivazione/disattivazione. Gli utenti possono accedere alle opzioni attivabili dalle Impostazioni rapide, come mostrato nella Figura 3, o dalla schermata Privacy nelle impostazioni di sistema.

Le opzioni di attivazione/disattivazione della fotocamera e del microfono hanno effetto su tutte le app sul dispositivo:

  • Quando l'utente disattiva l'accesso alla videocamera, la tua app riceve un feed videocamera vuoto.
  • Quando l'utente disattiva l'accesso al microfono, l'app riceve l'audio silenzioso. Inoltre, i sensori di movimento hanno una frequenza limitata, indipendentemente dal fatto che tu dichiari o meno l'autorizzazione HIGH_SAMPLING_RATE_SENSORS.

Quando l'utente disattiva l'accesso alla fotocamera o al microfono e avvia un'app che richiede l'accesso alle informazioni della fotocamera o del microfono, il sistema ricorda all'utente che l'opzione di attivazione/disattivazione a livello di dispositivo è disattivata.

Controlla il supporto dei dispositivi

Per verificare se un dispositivo supporta l'attivazione/disattivazione di microfono e fotocamera, aggiungi la logica visualizzata 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);