In Android 6 e versioni successive, ai provider di servizi Wi-Fi e agli analizzatori di pacchetti è stato impedito di recuperare l'indirizzo MAC di fabbrica di un dispositivo tramite lo stack Wi-Fi dalle richieste di rete. A partire da Android 10, sono in vigore ulteriori restrizioni che limitano l'accesso agli identificatori di dispositivo (ID) alle app con il livello di autorizzazione privilegiato . Questo protegge gli ID dispositivo come
- telefonia numeri IMEI, MEID, ESN e IMSI.
- build, SIM o numeri di serie USB.
Chi può accedere agli ID dispositivo
Gli ID dispositivo sono limitati su tutti i dispositivi Android 10, anche se le app hanno come target Android 9 o versioni precedenti. È possibile accedere agli ID dispositivo da
- L'app SMS predefinita.
- App con l'autorizzazione
READ_PRIVILEGED_PHONE_STATE
nella classeManifest.permission
e la lista consentita nel fileprivapp-permission.xml
. Questi devono anche essere caricati nella directorypriv-app
. - App con privilegi di operatore come definiti in UICC Carrier Privileges .
- Un proprietario del dispositivo o del profilo con l'autorizzazione
READ_PHONE_STATE
concessa nella classeManifest.permission
. (Non è richiesta l'autorizzazione.)
Accesso privilegiato ai pacchetti
Un pacchetto deve avere i privilegi per accedere agli ID dispositivo. Deve avere l'autorizzazione READ_PRIVILEGED_PHONE_STATE
nella classe Manifest.permission
ed essere nella lista consentita nel file privapp-permission.xml
. Per informazioni sul processo della lista consentita, vedere Lista consentita delle autorizzazioni con privilegi .
Per informazioni su come ottenere un ID univoco per un pacchetto senza privilegi , fare riferimento a Casi d'uso comuni e l'identificatore appropriato da utilizzare .
ID dispositivo limitati e indirizzi MAC randomizzati
Per limitare ulteriormente gli ID dispositivo, tutti i dispositivi su Android 10 trasmettono indirizzi MAC randomizzati per impostazione predefinita sia per il probe che per le richieste associate e devono avere un indirizzo MAC randomizzato diverso per ciascun SSID. Non utilizzare l'indirizzo MAC di fabbrica del dispositivo in modalità client, punto di accesso software (AP) o casi d'uso Wi-Fi Direct. Deve rimanere nascosto dalle API accessibili pubblicamente che non sono app privilegiate. Le app con privilegi che richiedono la restituzione dell'indirizzo MAC di fabbrica devono disporre dell'autorizzazione LOCAL_MAC_ADDRESS
.
Gli utenti hanno la possibilità di mantenere l'indirizzo MAC casuale predefinito assegnato a ciascun SSID. L'opzione è visualizzabile in Privacy in Impostazioni > Dettagli rete . Per informazioni su come ottenere un indirizzo MAC randomizzato, vedere Indirizzi MAC randomizzati .

App che richiamano le API dell'ID dispositivo
Le app che richiamano le API dell'ID dispositivo devono soddisfare i requisiti di Android 10. In caso contrario, quando tentano di accedere agli ID dispositivo, viene restituito quanto segue:
- App destinate ad Android 10
- Viene generata un'eccezione
SecurityException
dalle API dell'ID dispositivo. - App destinate ad Android 9 o precedenti
- Se dispongono dell'autorizzazione
READ_PHONE_STATE
, viene restituita una rispostanull
o dati segnaposto. - In caso contrario, le API dell'ID dispositivo generano un'eccezione
SecurityException
che contiene il nome del metodo chiamato e un'indicazione che l'app chiamante non soddisfa i requisiti per accedere all'ID richiesto.
Per ulteriori informazioni sugli ID dispositivo immutabili, vedere Identificatori di dispositivo non ripristinabili e procedure consigliate per identificatori univoci .
Test
È necessario impedire alle app di accedere al numero di serie del dispositivo e, ove applicabile, all'IMEI/MEID, al numero di serie della SIM e all'ID abbonato. Le app con autorizzazione ad accedere a questi ID devono inoltre soddisfare uno dei criteri elencati in Chi può accedere agli ID dispositivo .