Ridurre al minimo le richieste di autorizzazione

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:

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:

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.