Le app destinate ad Android 13 (livello API 33) o versioni successive che gestiscono le connessioni Wi-Fi
devono richiedere l'autorizzazione di runtime
NEARBY_WIFI_DEVICES
. Questa
autorizzazione consente di giustificare più facilmente l'accesso di un'app ai dispositivi Wi-Fi nelle vicinanze;
nelle versioni precedenti di Android, invece, queste app dovevano dichiarare l'autorizzazione
ACCESS_FINE_LOCATION
.
L'autorizzazione fa parte del gruppo di dispositivi nelle vicinanze
L'autorizzazione NEARBY_WIFI_DEVICES
fa parte del gruppo di autorizzazioni Dispositivi nelle vicinanze. Questo gruppo, aggiunto in Android 12 (livello API 31), include anche le autorizzazioni relative al Bluetooth e alla banda ultralarga. Quando richiedi una qualsiasi combinazione di autorizzazioni a questo gruppo di autorizzazioni, il sistema mostra un'unica finestra di dialogo di runtime e chiede all'utente di approvare l'accesso della tua app ai dispositivi nelle vicinanze.
Nelle impostazioni di sistema, l'utente deve attivare e disattivare le autorizzazioni Dispositivi nelle vicinanze come gruppo; ad esempio, gli utenti non possono disattivare l'accesso Wi-Fi, ma mantenere attivo l'accesso Bluetooth per una determinata app.
Affermare con fermamente che la tua app non rileva la posizione fisica
Se scegli come target Android 13 o versioni successive, valuta se la tua app ricava mai informazioni sulla posizione dalle API Wi-Fi; in caso contrario, dovresti dichiararlo vivamente. Per effettuare questa asserzione, imposta l'attributo usesPermissionFlags
su neverForLocation
nel file manifest della tua app, come mostrato nel seguente snippet di codice. Questa procedura è simile a quella che esegui quando dichiari che le informazioni del dispositivo Bluetooth non vengono mai utilizzate per la posizione:
<manifest ...> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> <application ...> ... </application> </manifest>
Le versioni precedenti e alcune API richiedono l'autorizzazione di accesso alla posizione
Diverse API Wi-Fi richiedono l'autorizzazione ACCESS_FINE_LOCATION
, anche se la tua
app ha come target Android 13 o versioni successive. Gli esempi includono i seguenti
metodi della classe WifiManager
:
Inoltre, poiché l'autorizzazione NEARBY_WIFI_DEVICES
è disponibile solo su
Android 13 e versioni successive, devi conservare tutte le dichiarazioni relative a
ACCESS_FINE_LOCATION
per garantire la compatibilità con le versioni precedenti nella tua app. Tuttavia, a condizione che la tua app
non si basi diversamente su
informazioni sulla posizione esatta, puoi
impostare la versione massima dell'SDK di questa autorizzazione su 32
, come mostrato nel
seguente snippet di codice:
<manifest ...> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="32" /> <application ...> ... </application> </manifest>
Verifica la presenza di API che richiedono l'autorizzazione
Se la tua app ha come target Android 13 o versioni successive, devi dichiarare l'autorizzazione
NEARBY_WIFI_DEVICES
per chiamare una delle seguenti API Wi-Fi:
WifiManager
WifiAwareManager
WifiAwareSession
WifiP2pManager
WifiRttManager
Flussi di lavoro dell'accesso Wi-Fi
La figura 1 mostra il flusso di lavoro dell'accesso Wi-Fi sui dispositivi con Android 13 o versioni successive, per le app destinate ad
Android 13 o versioni successive. Tieni presente che, purché dichiari che la tua app non ricava la posizione fisica dalle informazioni del dispositivo Wi-Fi, non devi più dichiarare l'autorizzazione ACCESS_FINE_LOCATION
:
La Figura 2 mostra il flusso di lavoro dell'accesso Wi-Fi sui dispositivi da 12 litri o inferiori. Tieni presente che devi fare affidamento
sull'autorizzazione ACCESS_FINE_LOCATION
.