Le autorizzazioni relative alla posizione, al microfono e alla fotocamera consentono alla tua app di accedere 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 alla posizione, al microfono e alla fotocamera.
Queste funzionalità di sistema incentrate sulla tutela della privacy non dovrebbero influire sul modo in cui la tua app gestisce le autorizzazioni relative alla posizione, al microfono e alla fotocamera, a condizione che tu rispetti le best practice relative alla privacy.
In particolare, assicurati di eseguire le seguenti operazioni nell'app:
- Attendi prima di accedere alla fotocamera del dispositivo finché l'utente non concede l'autorizzazione
CAMERA
per la tua app. - Attendi che l'utente acceda al microfono del dispositivo finché non concede 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
oACCESS_FINE_LOCATION
, come descritto nella guida su come richiedere le autorizzazioni di accesso alla posizione. - Prima di richiedere l'autorizzazione
ACCESS_BACKGROUND_LOCATION
, attendi che l'utente conceda alla tua app l'autorizzazioneACCESS_COARSE_LOCATION
oACCESS_FINE_LOCATION
.
Dashboard della privacy
Sui dispositivi supportati con Android 12 o versioni successive, nelle impostazioni di sistema viene visualizzata la schermata 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 degli accessi di diverse app 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 agli utenti una motivazione per capire perché accede alle informazioni sulla posizione, sulla fotocamera o sul 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é l'app accede alle informazioni sulla posizione, sulla fotocamera e sul microfono, completa i seguenti passaggi:
Aggiungi un'attività che, all'avvio, fornisca una motivazione per cui la tua app esegue un determinato tipo di azione di accesso ai dati. In questa attività, imposta l'attributo
android:permission
suSTART_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
.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>
Decidi come deve essere visualizzata la tua attività relativa alla logica di 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 la tua app e sul momento in cui si è verificato l'accesso, gestisci gli extra inclusi dal sistema quando richiama l'intent di utilizzo delle autorizzazioni:
- Se il sistema richiama
ACTION_VIEW_PERMISSION_USAGE
, la tua app può recuperare un valore perEXTRA_PERMISSION_GROUP_NAME
. - Se il sistema richiama
ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD
, la tua app può recuperare i valori perEXTRA_PERMISSION_GROUP_NAME
,EXTRA_ATTRIBUTION_TAGS
,EXTRA_START_TIME
eEXTRA_END_TIME
.
- Se il sistema richiama
A seconda dei filtri per intent che aggiungi, in determinate schermate gli utenti vedono un'icona delle informazioni accanto al nome della tua app:
- Se aggiungi il filtro per intent contenente l'azione
VIEW_PERMISSION_USAGE
, gli utenti vedranno l'icona nella pagina delle autorizzazioni dell'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 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à logica della tua app.
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 Impostazioni rapide e selezionare l'icona per vedere quali app usano il microfono o la fotocamera. La figura 2 mostra uno screenshot di esempio contenente le icone.
Identifica la posizione degli indicatori sullo schermo
Se la tua app supporta la modalità immersiva o un'UI a schermo intero, gli indicatori potrebbero sovrapporsi temporaneamente all'UI dell'app. Per adattare la tua UI a questi indicatori, il sistema introduce il metodo getPrivacyIndicatorBounds()
, illustrato nel seguente snippet di codice. Questa API consente di 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
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 dalle Impostazioni rapide, come mostrato nella Figura 3, o dalla schermata Privacy nelle impostazioni di sistema.
L'attivazione/disattivazione di fotocamera e microfono influisce 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, la tua app riceve l'audio silenzioso. Inoltre, i sensori di movimento hanno limitazioni di frequenza, indipendentemente dal fatto che tu dichiari l'autorizzazione
HIGH_SAMPLING_RATE_SENSORS
.
Quando l'utente disattiva l'accesso alla fotocamera o al microfono e poi 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 l'assistenza del dispositivo
Per verificare se un dispositivo supporta l'attivazione/disattivazione del microfono e della videocamera, aggiungi la logica riportata 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);