Le app che hanno come target Android 13 (livello API 33) o versioni successive e gestiscono le connessioni Wi-Fi
devono richiedere
l'NEARBY_WIFI_DEVICES
autorizzazione runtime. Questa
autorizzazione semplifica la giustificazione dell'accesso di un'app ai dispositivi Wi-Fi nelle vicinanze.
Nelle versioni precedenti di Android, queste app dovevano dichiarare
l'autorizzazione
ACCESS_FINE_LOCATION
.
L'autorizzazione fa parte del gruppo 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
autorizzazioni relative a Bluetooth e banda ultralarga. Quando richiedi una qualsiasi combinazione di autorizzazioni di questo gruppo, il sistema mostra una singola 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 al Wi-Fi, ma mantenere
l'accesso al Bluetooth attivo per una determinata app.
Afferma con decisione che la tua app non ricava la posizione fisica
Quando scegli come target Android 13 o versioni successive, valuta se la tua app
deriva mai informazioni sulla posizione dalle API Wi-Fi; in caso contrario, devi
dichiararlo in modo esplicito. Per fare questa asserzione, imposta l'attributo usesPermissionFlags
su
neverForLocation
nel file manifest dell'app, come mostrato nello snippet di codice
seguente. Questa procedura è simile a quella che esegui quando
affermi che le informazioni sui dispositivi 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 quando la tua
app ha come target Android 13 o versioni successive. Alcuni 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 le dichiarazioni per
ACCESS_FINE_LOCATION
per garantire la compatibilità con le versioni precedenti nella tua app. Tuttavia, se la tua app
non si basa altrimenti su
informazioni sulla posizione esatta, puoi
impostare la versione SDK massima 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>
Controlla le 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 di accesso al Wi-Fi
La Figura 1 mostra il flusso di lavoro di accesso al Wi-Fi sui dispositivi con
Android 13 o versioni successive, per le app che hanno come target
Android 13 o versioni successive. Tieni presente che, se affermi 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 di accesso al Wi-Fi sui dispositivi con
12L o versioni precedenti. Tieni presente che si basa sull'autorizzazione
ACCESS_FINE_LOCATION
.