Nell'ambito del miglioramento della qualità delle app e della protezione della privacy degli utenti, ti consigliamo di ridurre al minimo l'utilizzo delle autorizzazioni nelle tue app. In questo modo gli utenti possono scoprire e utilizzare app di alta qualità che offrono un ambiente sicuro e protetto.
La richiesta di autorizzazioni agli utenti interrompe il flusso utente e gli utenti possono rifiutare la tua richiesta. Inoltre, ogni volta che dichiari una nuova autorizzazione, devi esaminare in che modo la tua app richiede e condivide i dati utente. Alcune API e autorizzazioni particolarmente sensibili richiedono di fornire un'informativa in-app relativa ad accesso, raccolta, utilizzo e condivisione dei dati.
Esistono diversi modi alternativi per ridurre al minimo l'utilizzo delle autorizzazioni:
- Dichiara le autorizzazioni che forniscono informazioni sulla posizione approssimativa, anziché informazioni sulla posizione precisa, se la tua app ha bisogno solo della posizione approssimativa.
- Chiama le API che consentono alla tua app di eseguire la funzionalità desiderata senza dichiarare le autorizzazioni.
- Richiama intent o gestori di eventi specifici per eseguire funzionalità, anziché dichiarare le autorizzazioni.
- Il sistema fornisce contratti integrati per diverse operazioni sui file e supporta anche contratti personalizzati.
Se devi dichiarare un'autorizzazione, rispetta sempre la decisione dell'utente e fornisci un modo per ridurre in modo controllato l'esperienza della tua app.
Questa pagina descrive diversi casi d'uso che la tua app può soddisfare senza dichiarare la necessità di autorizzazioni.
Mostrare i luoghi nelle vicinanze
La tua app potrebbe aver bisogno di conoscere la posizione approssimativa dell'utente. Questo è utile per mostrare informazioni basate sulla posizione, ad esempio i ristoranti nelle vicinanze.
Alcuni casi d'uso richiedono solo una stima approssimativa della posizione di un dispositivo. In queste situazioni, esegui una delle seguenti operazioni, a seconda della frequenza con cui la tua app ha bisogno di informazioni basate sulla posizione:
- Se la tua app ha spesso bisogno della posizione, dichiara l'autorizzazione
ACCESS_COARSE_LOCATION
. L'autorizzazione fornisce una stima della posizione del dispositivo dai servizi di localizzazione, come descritto nella documentazione sulla precisione della posizione approssimativa. - Se la tua app ha bisogno della posizione meno spesso o solo una volta, valuta la possibilità di chiedere all'utente di inserire un indirizzo o un codice postale.
Altri casi d'uso richiedono una stima più precisa della posizione di un dispositivo. Queste
situazioni sono le uniche in cui è consentito dichiarare l'autorizzazione
ACCESS_FINE_LOCATION
.
Creare e accedere ai file
Android ti consente di creare e accedere ai file senza dover dichiarare alcuna autorizzazione relativa all'archiviazione o ai sensori.
Aprire i file multimediali
La tua app potrebbe consentire agli utenti di scegliere tra le proprie foto e i propri video, ad esempio per gli allegati dei messaggi o le immagini del profilo.
Per supportare questa funzionalità, utilizza il selettore di foto. Il selettore di foto non richiede autorizzazioni di runtime per essere utilizzato. Quando un utente interagisce con il selettore di foto per selezionare foto o video da condividere con la tua app, il sistema concede l'accesso in lettura temporaneo all'URI associato ai file multimediali selezionati.
Se la tua app deve accedere ai file multimediali senza utilizzare il selettore di foto, non devi dichiarare alcuna autorizzazione di archiviazione:
- Se accedi ai file multimediali creati dalla tua app, questa ha già accesso a questi file nel media store.
- Se accedi a file multimediali creati da altre app, utilizza Storage Access Framework.
Aprire i documenti
La tua app potrebbe mostrare i documenti creati dall'utente, nella tua app o in un'altra app. Un esempio comune è un file di testo.
In questo caso, dichiara
READ_EXTERNAL_STORAGE
solo per la compatibilità con i dispositivi meno recenti. Imposta android:maxSdkVersion
su
28
.
A seconda dell'app che ha creato il documento, esegui una delle seguenti operazioni:
- Se l'utente ha creato il documento nella tua app, accedi direttamente.
- Se l'utente ha creato il documento in un'altra app, utilizza lo Storage Access Framework.
Scatta una foto
Gli utenti potrebbero scattare foto nella tua app utilizzando l'app Fotocamera di sistema preinstallata.
In questa situazione, non dichiarare l'autorizzazione CAMERA
. Invoca invece l'azione
ACTION_IMAGE_CAPTURE
di intent.
Registra un video
Gli utenti potrebbero registrare video nella tua app utilizzando l'app Fotocamera di sistema preinstallata.
In questa situazione, non dichiarare l'autorizzazione CAMERA
. Invoca invece l'azione
ACTION_VIDEO_CAPTURE
di intent.
Identificare il dispositivo che esegue un'istanza della tua app
Una particolare istanza della tua app potrebbe dover sapere su quale dispositivo è in esecuzione. Ciò è utile per le app con preferenze o messaggi specifici per il dispositivo, ad esempio playlist diverse per TV e dispositivi indossabili.
In questa situazione, non accedere direttamente all'IMEI del dispositivo. Infatti, a partire da Android 10, non puoi farlo. In alternativa, esegui una delle seguenti operazioni:
- Recupera un identificatore univoco del dispositivo per l'istanza della tua app utilizzando la libreria Instance ID.
- Crea un identificatore personalizzato con ambito di applicazione limitato allo spazio di archiviazione della tua app. Utilizza le funzioni
di sistema di base, ad esempio
randomUUID()
.
Accoppiamento con un dispositivo tramite Bluetooth
La tua app potrebbe offrire un'esperienza migliorata trasferendo dati a un altro dispositivo tramite Bluetooth.
Per supportare questa funzionalità, non dichiarare le autorizzazioni ACCESS_FINE_LOCATION
,
ACCESS_COARSE_LOCATIION
o BLUETOOTH_ADMIN
. Utilizza invece
l'accoppiamento del dispositivo complementare.
Inserire automaticamente il numero di una carta di pagamento
Google Play Services offre una libreria che ti consente di inserire automaticamente un numero di carta di pagamento. Anziché dichiarare l'autorizzazione CAMERA
, puoi utilizzare
la libreria di riconoscimento
di carte di debito e credito.
Gestire chiamate e messaggi
Android e Google Play Services offrono librerie che ti consentono di gestire chiamate e messaggi senza dover dichiarare autorizzazioni relative a chiamate o SMS.
Inserire automaticamente un passcode monouso
Per semplificare un flusso di lavoro di autenticazione a due fattori, la tua app potrebbe inserire automaticamente il passcode monouso inviato al dispositivo di un utente per verificare la sua identità.
Per supportare questa funzionalità sui dispositivi basati su Google Play Services, non
dichiarare l'autorizzazione READ_SMS
. Utilizza invece l'API
SMS Retriever.
Su altri dispositivi, se la tua app ha come target Android 8.0 (livello API 26) o versioni successive, genera un token specifico per l'app utilizzando createAppSpecificSmsToken()
. Passa questo token a
un'altra app o un altro servizio che può inviare un messaggio SMS di verifica.
Inserire automaticamente il numero di telefono dell'utente
Per fornire vendite o assistenza più efficienti, la tua app potrebbe consentire all'utente di inserire automaticamente il numero di telefono del dispositivo.
Per supportare questa funzionalità sui dispositivi basati su Google Play Services, non
dichiarare l'autorizzazione READ_PHONE_STATE
. Utilizza invece la libreria Suggerimento
numero di telefono.
Filtrare le chiamate
Per ridurre al minimo le interruzioni non necessarie per l'utente, la tua app potrebbe filtrare le chiamate per lo spam.
Per supportare questa funzionalità, non dichiarare l'autorizzazione READ_PHONE_STATE
.
Utilizza invece l'API
CallScreeningService
.
Effettuare chiamate telefoniche
La tua app potrebbe offrire la possibilità di effettuare una chiamata toccando le informazioni di un contatto.
Per supportare questa funzionalità, utilizza l'intent
ACTION_DIAL
anziché l'azione ACTION_CALL
. ACTION_CALL
richiede l'autorizzazione
al momento dell'installazione CALL_PHONE
, che impedisce ai dispositivi che non possono effettuare chiamate, come
alcuni tablet, di installare la tua applicazione.
Mettere in pausa i contenuti multimediali quando l'app viene interrotta
Se l'utente riceve una chiamata o se si verifica un allarme configurato dall'utente, la tua app deve mettere in pausa la riproduzione di contenuti multimediali finché non riacquisisce lo stato attivo audio.
Per supportare questa funzionalità, non dichiarare l'autorizzazione READ_PHONE_STATE
. Implementa invece il
onAudioFocusChange()
gestore eventi, che viene eseguito automaticamente quando il sistema sposta la messa a fuoco audio.
Scopri di più su come implementare la messa a fuoco
dell'audio.
Scansionare codici a barre
Android include il supporto dell'API Google Code Scanner, basata su Google Play Services, che consente di decodificare i codici a barre senza dichiarare alcuna autorizzazione della fotocamera. Questa API contribuisce a preservare la privacy degli utenti e riduce la probabilità di dover creare un'interfaccia utente personalizzata per il tuo caso d'uso di scansione dei codici a barre.
L'API scansiona il codice a barre e restituisce solo i risultati della scansione alla tua app. Le immagini vengono elaborate sul dispositivo e Google non memorizza dati o risultati della scansione.
Se la tua app deve supportare casi d'uso o formati di codici a barre complessi oppure se richiede un'interfaccia utente personalizzata, utilizza l'API di scansione di codici a barre di ML Kit.
Reimposta le autorizzazioni inutilizzate
Android offre diversi modi per reimpostare le autorizzazioni di runtime inutilizzate sul loro stato predefinito di negazione.
Leggi le indicazioni di progettazione.
Richiedere autorizzazioni di runtime
Una volta stabilito che la tua app deve dichiarare e richiedere le autorizzazioni di runtime, segui un flusso di lavoro specifico.
Leggi le indicazioni di progettazione.
Spiega perché la tua app ha bisogno delle autorizzazioni
L'utilizzo di requestPermissions()
mostra una finestra di dialogo che indica le autorizzazioni che la tua
app vuole utilizzare, ma non spiega il motivo, il che potrebbe confondere l'utente.
Per ulteriori dettagli e consigli su come e quando mostrare questa finestra di dialogo, leggi le linee guida di progettazione.
Gestire i rifiuti di autorizzazioni
La tua app deve aiutare gli utenti a comprendere le implicazioni del rifiuto di un'autorizzazione prima e dopo che hanno scelto di farlo.
Leggi le indicazioni di progettazione.