Le autorizzazioni di runtime in Android 6 e versioni successive consentono agli utenti di controllare quando consentire la registrazione dell'audio dal microfono o del video dalla fotocamera di un dispositivo. Prima che un'app possa registrare, un utente deve concederle o negarle l'autorizzazione tramite una finestra di dialogo visualizzata dal sistema.
Android 12 offre agli utenti trasparenza visualizzando indicatori quando un'app utilizza un'origine dati privata tramite le autorizzazioni di accesso alle app per le fotocamere e il microfono. Il record delle operazioni delle app accede alle API protette da autorizzazioni di runtime.
App-op monitora sia lo stato dell'attività sia il numero di singole chiamate API e interagisce con gli indicatori di microfono e fotocamera in Android 12 per mostrare agli utenti quando le app hanno avuto accesso ai dati audio e della fotocamera sui loro dispositivi. Quando gli utenti fanno clic sugli indicatori del microfono o della fotocamera, vedono quali app hanno avuto accesso ai loro dati. Questa funzionalità è obbligatoria per tutti gli OEM.
Requisiti di visibilità degli indicatori
Di seguito sono riportati i requisiti per gli indicatori di microfono e fotocamera sui dispositivi con Android 12 o versioni successive:
- Gli indicatori devono essere visualizzati nella barra di stato e mantenere la massima priorità visiva (ad esempio, nella posizione più a destra nell'angolo in alto a destra).
- Gli indicatori devono trovarsi sempre nella stessa posizione e non devono essere bloccati da un'app al momento del lancio.
- Entrambi gli indicatori devono essere di colore verde (o una variante di verde).
- Il clic su uno o entrambi gli indicatori deve visualizzare una notifica di affordance per l'attribuzione dell'app che:
- Mostra il nome dell'app che utilizza il microfono e/o la fotocamera
- Mostra il nome dell'app che ha utilizzato il microfono e (o) la fotocamera negli ultimi 15 secondi
- Rimanda gli utenti alla pagina delle autorizzazioni delle app in Impostazioni
Utilizzo e funzionalità
In Android 12, l'interfaccia utente distingue tra utilizzi in esecuzione e utilizzi recenti. Gli utilizzi sono considerati attivi se sono contrassegnati dal sistema come in esecuzione o hanno meno di 5 secondi.
- Le icone della barra di stato vengono visualizzate ogni volta che un'app ha accesso in corso al microfono o alla fotocamera e i dati sono sensibili per l'utente.
- Gli utenti possono fare clic su queste icone e vedere quali app accedono al microfono, alla fotocamera o a entrambi.
Figura 1. Indicatori di utilizzo di microfono e fotocamera che mostrano l'accesso attivo (angolo in alto a destra)
L'accesso è considerato attivo finché vengono visualizzati gli indicatori. Viene visualizzata inizialmente un'icona, che poi passa a un punto che rimane visibile finché l'app non viene ignorata o chiusa.
Quando un utente tocca gli indicatori, si apre una finestra di dialogo che mostra che un'app utilizza la fotocamera, il microfono o entrambi.
Figura 2. Indicatori di accessi attivi e recenti
L'immagine nella Figura 2 mostra gli indicatori di accesso attivi quando i dati sono stati acceduti negli ultimi 5 secondi da un'app in esecuzione.
Gli indicatori di accesso recente mostrano che un'app ha avuto accesso ai dati durante i 15 secondi precedenti, ma che l'app non è attiva. Nel dialogo vengono visualizzate tutte le app attive, ma solo un'app viene visualizzata come origine dell'accesso recente, anche se più di un'app ha avuto accesso ai dati in un intervallo di tempo precedente di 15 secondi. La visualizzazione dell'accesso rimane bloccata finché l'utente non chiude la finestra di dialogo di notifica.
Caricare e attivare
La classe PermissionManager
fornisce un metodo per compilare la finestra di dialogo, che appartiene all'interfaccia utente di sistema.
- L'interfaccia utente di sistema reagisce a un passaggio di configurazione del dispositivo:
privacy/mic_camera_indicators_enabled
. - Il passaggio è necessario perché esistono due veicoli di consegna distinti, in questo ordine:
- Pubblica.
- Attiva.
- L'interfaccia utente di sistema non deve arrestarsi in modo anomalo se il metodo in
PermissionManager
non può fornire i dati necessari.
Flusso di lavoro
La funzionalità dell'indicatore di autorizzazione è composta da tre parti principali:
- Le app
- Gli indicatori (gestiti da SystemUI)
- Un modo per stabilire quali app usano i dati
PermissionController
fornisce il meccanismo per determinare quali app utilizzano i dati. SystemUI ascolta le app che utilizzano dati privati. SystemUI mostra un'icona nella barra di navigazione in alto che corrisponde alle autorizzazioni utilizzate. PermissionController
mostra i dati relativi agli utilizzi quando un utente fa clic su un'icona.
Figura 3. Componenti di sistema e flusso delle transizioni (UI)
Le transizioni numerate nella Figura 3 sono descritte di seguito:
1- Un'app richiede dati privati al sistema.
2- Il sistema controlla le autorizzazioni. Se le autorizzazioni sono consentite, il sistema invia una notifica al fornitore di dati e annota l'utilizzo in app-ops
3: il fornitore di dati fornisce i dati all'app.
4-5 L'utente fa clic sulle icone. L'interfaccia utente di sistema richiede dati daPermissionManager
e presenta la finestra di dialogo all'utente.
Dettagli della procedura
- Le app usano il microfono e la fotocamera, chiamando
AppOpsManager.startOp
,stopOp
e (o)noteOp
. In questo modo vengono creati record app-op nel server di sistema. - La UI di sistema rimane in ascolto delle nuove operazioni dell'app utilizzando gli ascoltatori
AppOpsManager.OnOpActiveChangedInternalListener
eOnOpNotedListener
. Quando si verifica un nuovo utilizzo (tramite una chiamata astartOp
onoteOp
), la UI di sistema verifica che l'utilizzo provenga da un'app di sistema. - Se l'UI di sistema verifica l'utilizzo dell'app di sistema e se l'utilizzo riguarda il microfono, l'UI di sistema controlla se il microfono è disattivato.
- Se l'UI di sistema verifica l'utilizzo di app non di sistema (e, per l'utilizzo del microfono, che il microfono sia riattivato e per l'utilizzo della fotocamera, che la fotocamera è attivata), viene visualizzata un'icona che indica l'utilizzo.
Se l'interfaccia utente di sistema riceve un noteOp
, che non ha durata, mostra l'icona per almeno 5 secondi. In caso contrario, l'icona viene visualizzata fino a quando non riceve un stopOp
o per 5 secondi, a seconda del periodo più lungo. Quando l'utente fa clic su un'icona, viene avviata un'intenzione che passa a PermissionController
per avviare la finestra di dialogo.
PermissionController
carica tutto l'utilizzo recente del microfono e della fotocamera. Controlla se sono in esecuzione o se erano in esecuzione nell'intervallo di tempo impostato dall'interfaccia utente di sistema. Se viene trovata una corrispondenza, viene visualizzato il nome dell'app che ha utilizzato l'autorizzazione e le autorizzazioni utilizzate dall'app.
A causa di questa modifica in Android 12 e versioni successive, alcune app devono modificare il proprio comportamento o implementarne uno speciale.
La telefonia deve implementare l'utilizzo delle autorizzazioni (per tenere conto della pila del microfono separata utilizzata nelle chiamate), mentre lavora con l'app Ricerca Google per Android (AGSA) e Google Mobile Services (GMS).