Modifiche alla privacy in Android 10

Android 10 (livello API 29) introduce una serie di funzionalità e modifiche al comportamento per proteggere meglio la privacy degli utenti. Queste modifiche estendono la trasparenza e il controllo degli utenti sui propri dati e sulle funzionalità concesse alle app. Queste funzionalità potrebbero indicare che comportamenti o dati specifici su cui si basa la tua app potrebbero comportarsi in modo diverso rispetto alle versioni precedenti della piattaforma. Le ripercussioni sulla tua app dovrebbero essere minime se segue le best practice attuali per la gestione dei dati utente.

Questa pagina elenca un riepilogo di ogni modifica.

Modifiche principali

Questa sezione include le modifiche principali di Android 10 relative alla privacy.

Accesso allo spazio di archiviazione esterno limitato a file e contenuti multimediali dell'app

Per impostazione predefinita, alle app che hanno come target Android 10 e versioni successive viene concesso accesso con ambito allo spazio di archiviazione esterno o archiviazione con ambito. Queste app possono vedere i seguenti tipi di file all'interno di un dispositivo di archiviazione esterno senza dover richiedere autorizzazioni dell'utente relative allo spazio di archiviazione:

Per scoprire di più sullo spazio di archiviazione limitato e su come condividere, accedere e modificare i file salvati su dispositivi di archiviazione esterni, consulta le guide su come gestire i file nello spazio di archiviazione esterno e su come accedere e modificare i file multimediali.

L'accesso alla posizione del dispositivo in background richiede l'autorizzazione

Per supportare il controllo aggiuntivo che gli utenti hanno sull'accesso di un'app ai dati sulla posizione, Android 10 introduce l'autorizzazione ACCESS_BACKGROUND_LOCATION.

A differenza delle autorizzazioni ACCESS_FINE_LOCATION e ACCESS_COARSE_LOCATION, l'autorizzazione ACCESS_BACKGROUND_LOCATION influisce sull'accesso alla posizione di un'app solo quando viene eseguita in background. Un'app è considerata come in accesso alla posizione in background, a meno che non sia soddisfatta una delle seguenti condizioni:

  • È visibile un'attività appartenente all'app.
  • L'app esegue un servizio in primo piano che ha dichiarato un tipo di servizio in primo piano dilocation.

    Per dichiarare il tipo di servizio in primo piano per un servizio nella tua app, imposta targetSdkVersion o compileSdkVersion della tua app su 29 o versioni successive. Scopri di più su come i servizi in primo piano possono continuare le azioni avviate dall'utente che richiedono l'accesso alla posizione.

Se la tua app crea e monitora recinti virtuali e ha come target Android 10 (livello API 29) o versioni successive, devi dichiarare l'autorizzazione ACCESS_BACKGROUND_LOCATION.

Accesso concesso automaticamente quando si sceglie come target Android 9 o versioni precedenti

Se la tua app funziona su Android 10 o versioni successive, ma ha come target Android 9 (livello API 28) o versioni precedenti, la piattaforma applica il seguente comportamento:

  • Se la tua app dichiara un elemento <uses-permission> per ACCESS_FINE_LOCATION o ACCESS_COARSE_LOCATION, il sistema aggiunge automaticamente un elemento <uses-permission> per ACCESS_BACKGROUND_LOCATION durante l'installazione.
  • Se la tua app richiede ACCESS_FINE_LOCATION o ACCESS_COARSE_LOCATION, il sistema aggiunge automaticamente ACCESS_BACKGROUND_LOCATION alla richiesta.

Accedere quando viene eseguito l'upgrade del dispositivo ad Android 10

Se un utente concede alla tua app l'accesso alla posizione del dispositivo (ACCESS_COARSE_LOCATION o ACCESS_FINE_LOCATION) e poi esegue l'upgrade del dispositivo da Android 9 ad Android 10, il sistema aggiorna automaticamente l'insieme di autorizzazioni basate sulla posizione concesse alla tua app. L'insieme di autorizzazioni che la tua app riceve dopo l'upgrade dipende dalla versione dell'SDK di destinazione e dalle autorizzazioni definite, come mostrato nella tabella seguente:

Tabella 1. Modifiche allo stato dell'autorizzazione di accesso alla posizione dopo l'upgrade del dispositivo ad Android 10

Versione della piattaforma di destinazione Autorizzazione
approssimativa o precisa concessa?
L'autorizzazione in background
è definita nel file manifest?
Stato dell'autorizzazione predefinita aggiornato
Android 10 Accesso in primo piano e in background
Android 10 No Solo accesso in primo piano
Android 10 No (Ignorato dal sistema) Nessun accesso
Android 9 o versioni precedenti Aggiunti automaticamente dal sistema al momento dell'upgrade del dispositivo Accesso in primo piano e in background
Android 9 o versioni precedenti No (Ignorato dal sistema) Nessun accesso

Tieni presente che l'utente può modificare questo livello di accesso anche dopo che il sistema ha aggiornato automaticamente l'accesso della tua app alla posizione del dispositivo. Ad esempio, l'utente potrebbe limitare l'accesso della tua app solo in primo piano o revocarlo del tutto. Prima di tentare di accedere alla posizione del dispositivo, in particolare all'interno di un servizio in primo piano, l'app deve verificare se l'utente continua a consentire all'app di ricevere queste informazioni sulla posizione.

Accesso revocato durante l'aggiornamento del livello API target sui dispositivi Android 10

Supponiamo che la tua app sia già installata su un dispositivo con Android 10. Se in questa situazione aggiorni l'app in modo che abbia come target Android 10, il dispositivo revoca l'autorizzazione ACCESS_BACKGROUND_LOCATION.

Per ulteriori informazioni su come recuperare la posizione del dispositivo quando l'app è in background, consulta la guida su come ricevere aggiornamenti periodici della posizione.

Limitazioni relative all'avvio di attività in background

A partire da Android 10, il sistema applica limitazioni all'avvio di attività in background. Questa modifica del comportamento contribuisce a ridurre al minimo le interruzioni per l'utente e gli consente di avere un maggiore controllo su ciò che viene mostrato sullo schermo. Se la tua app avvia attività come risultato diretto dell'interazione dell'utente, molto probabilmente non è interessata da queste limitazioni.

Per scoprire di più sull'alternativa consigliata per avviare le attività in background, consulta la guida su come avvisare gli utenti di eventi urgenti nella tua app.

Identificatori e dati

Questa sezione elenca le modifiche specifiche per l'utilizzo di identificatori e dati dei dispositivi.

Rimozione dell'affinità dei contatti

A partire da Android 10, la piattaforma non tiene traccia delle informazioni sull'affinità dei contatti. Di conseguenza, se la tua app esegue una ricerca sui contatti dell'utente, i risultati non vengono ordinati in base alla frequenza di interazione.

La guida su ContactsProvider contiene una nota che descrive i metodi e i campi specifici che sono obsoleti su tutti i dispositivi a partire da Android 10.

Selezione casuale dell'indirizzo MAC

Sui dispositivi con Android 10 o versioni successive, il sistema trasmette indirizzi MAC randomizzati per impostazione predefinita.

Se la tua app gestisce un caso d'uso aziendale, la piattaforma fornisce API per diverse operazioni relative agli indirizzi MAC:

  • Ottenere l'indirizzo MAC casuale: le app di proprietà del dispositivo e le app di proprietà del profilo possono recuperare l'indirizzo MAC casuale assegnato a una rete specifica chiamando getRandomizedMacAddress().
  • Ottenere l'indirizzo MAC di fabbrica effettivo: le app di proprietà del dispositivo possono recuperare l'indirizzo MAC hardware effettivo di un dispositivo chiamando getWifiMacAddress(). Questo metodo è utile per monitorare flotte di dispositivi.

Limitazione di accesso al file system /proc/net

Sui dispositivi con Android 10 o versioni successive, le app non possono accedere a /proc/net, che include informazioni sullo stato della rete di un dispositivo. Le app che hanno bisogno di accedere a queste informazioni, come le VPN, devono utilizzare la classe NetworkStatsManager o ConnectivityManager.

Limitazione per gli identificatori di dispositivi non reimpostabili

A partire da Android 10, le app devono disporre dell'READ_PRIVILEGED_PHONE_STATE autorizzazione privilegiata per accedere agli identificatori non reimpostabili del dispositivo, inclusi IMEI e numero di serie.

I metodi interessati sono i seguenti:

Se la tua app non dispone dell'autorizzazione e provi comunque a chiedere informazioni sugli identificatori non reimpostabili, la risposta della piattaforma varia in base alla versione dell'SDK di destinazione:

  • Se la tua app ha come target Android 10 o versioni successive, viene visualizzato un messaggio SecurityException.
  • Se la tua app ha come target Android 9 (livello API 28) o versioni precedenti, il metodo restituisce null o dati segnaposto se l'app dispone dell'autorizzazione READ_PHONE_STATE. In caso contrario, si verifica un SecurityException.

Molti casi d'uso non richiedono identificatori di dispositivi non reimpostabili. Ad esempio, se la tua app utilizza identificatori di dispositivo non reimpostabili a fini di monitoraggio degli annunci o analisi degli utenti, utilizza un ID pubblicità per Android per questi casi d'uso specifici. Per scoprire di più, consulta le best practice per gli identificatori univoci.

Accesso limitato ai dati degli appunti

A meno che l'app non sia l'editor di metodi di inserimento (IME) predefinito o l'app attualmente attiva, non può accedere ai dati della clipboard su Android 10 o versioni successive.

Protezione del numero di serie del dispositivo USB

Se la tua app ha come target Android 10 o versioni successive, non può leggere il numero di serie finché l'utente non ha concesso all'app l'autorizzazione ad accedere al dispositivo o all'accessorio USB.

Per scoprire di più sull'utilizzo dei dispositivi USB, consulta la guida su come configurare gli host USB.

Fotocamera e connettività

Questa sezione elenca le modifiche specifiche per le API di connettività e dei metadati della videocamera.

Limitazione dell'accesso ai dettagli e ai metadati della fotocamera

Android 10 modifica l'ampiezza delle informazioni restituite per impostazione predefinita dal metodo getCameraCharacteristics(). In particolare, l'app deve disporre dell'autorizzazione CAMERA per accedere ai metadati potenzialmente specifici del dispositivo inclusi nel valore di ritorno di questo metodo.

Per saperne di più su queste modifiche, consulta la sezione sui campi della videocamera che richiedono l'autorizzazione.

Limitazione per l'attivazione e la disattivazione del Wi-Fi

Le app che hanno come target Android 10 o versioni successive non possono attivare o disattivare il Wi-Fi. Il metodo WifiManager.setWifiEnabled() restituisce sempre false.

Se devi chiedere agli utenti di attivare e disattivare il Wi-Fi, utilizza un pannello di impostazioni.

Limitazioni all'accesso diretto alle reti Wi-Fi configurate

Per proteggere la privacy degli utenti, la configurazione manuale dell'elenco delle reti Wi-Fi è limitata alle app di sistema e ai controller dei criteri del dispositivo (DPC). Un determinato amministratore dispositivo può essere il proprietario del dispositivo o del profilo.

Se la tua app ha come target Android 10 o versioni successive e non è un'app di sistema o un DPC, i seguenti metodi non restituiscono dati utili:

Se la tua app deve connettersi a reti Wi-Fi, utilizza i seguenti metodi alternativi:

  • Per attivare una connessione locale istantanea a una rete Wi-Fi, utilizza WifiNetworkSpecifier in un oggetto NetworkRequest standard.
  • Per aggiungere reti Wi-Fi da prendere in considerazione per fornire all'utente l'accesso a internet, utilizza gli oggetti WifiNetworkSuggestion. Puoi aggiungere e rimuovere le reti visualizzate nella finestra di dialogo di selezione della rete di connessione automatica chiamando rispettivamente addNetworkSuggestions() e removeNetworkSuggestions(). Questi metodi non richiedono autorizzazioni di accesso alla posizione.

Alcune API di telefonia, Bluetooth e Wi-Fi richiedono l'autorizzazione di accesso alla posizione FINE

Se la tua app ha come target Android 10 o versioni successive, deve disporre dell'autorizzazione ACCESS_FINE_LOCATION per poter utilizzare diversi metodi all'interno delle API Wi-Fi, Wi-Fi Aware o Bluetooth. Le sezioni seguenti elencano le classi e i metodi interessati.

Telefonia

Wi-Fi

Bluetooth

Autorizzazioni

Questa sezione descrive gli aggiornamenti al modello di autorizzazioni di Android.

Accesso limitato ai contenuti dello schermo

Per proteggere i contenuti dello schermo degli utenti, Android 10 impedisce l'accesso silenzioso ai contenuti dello schermo del dispositivo modificando l'ambito delle autorizzazioni READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT e CAPTURE_SECURE_VIDEO_OUTPUT. A partire da Android 10, queste autorizzazioni sono solo di accesso con firma.

Le app che devono accedere ai contenuti dello schermo del dispositivo devono utilizzare l'API MediaProjection, che mostra una richiesta all'utente di fornire il consenso.

Controllo delle autorizzazioni rivolte agli utenti nelle app legacy

Se la tua app ha come target Android 5.1 (livello API 22) o versioni precedenti, gli utenti visualizzano una schermata delle autorizzazioni quando utilizzano la tua app per la prima volta su un dispositivo con Android 10 o versioni successive, come mostrato nella Figura 1. Questa schermata offre agli utenti la possibilità di revocare l'accesso alle autorizzazioni che il sistema aveva precedentemente concesso alla tua app al momento dell'installazione.

Acquisizione schermo della finestra di dialogo
Figura 1. Finestra di dialogo rivolta agli utenti che consente di esaminare le autorizzazioni legacy

Riconoscimento dell'attività fisica

Android 10 introduce l'android.permission.ACTIVITY_RECOGNITION autorizzazione di runtime per le app che devono rilevare il numero di passi dell'utente o classificare la sua attività fisica, ad esempio camminata, ciclismo o movimento in un veicolo. Questo è progettato per offrire agli utenti la visibilità di come vengono utilizzati i dati dei sensori del dispositivo nelle Impostazioni.

Alcune librerie all'interno di Google Play Services, come l'API Activity Recognition e l'API Google Fit, non forniscono risultati a meno che l'utente non abbia concesso questa autorizzazione alla tua app.

Gli unici sensori integrati sul dispositivo che richiedono di dichiarare questa autorizzazione sono i sensori di conteggio dei passi e di rilevamento dei passi.

Se la tua app ha come target Android 9 (livello API 28) o versioni precedenti, il sistema concede automaticamente all'app l'autorizzazione android.permission.ACTIVITY_RECOGNITION, se necessario, se l'app soddisfa tutte le seguenti condizioni:

  • Il file manifest include l'autorizzazione com.google.android.gms.permission.ACTIVITY_RECOGNITION.
  • Il file manifest non include l'autorizzazione android.permission.ACTIVITY_RECOGNITION.

Se il sistema automatico concede l'autorizzazione android.permission.ACTIVITY_RECOGNITION, la tua app la mantiene dopo l'aggiornamento per il targeting di Android 10. Tuttavia, l'utente può revocare questa autorizzazione in qualsiasi momento nelle impostazioni di sistema.

Gruppi di autorizzazioni rimossi dall'interfaccia utente

A partire da Android 10, le app non possono controllare in che modo le autorizzazioni sono agrupate nell'interfaccia utente.