Le app che hanno come target Android 13 (livello API 33) o versioni successive e gestiscono le connessioni Wi-Fi devono richiedere l'autorizzazione di runtime NEARBY_WIFI_DEVICES
. 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 invece l'autorizzazione
ACCESS_FINE_LOCATION
.
L'autorizzazione fa parte del gruppo di dispositivi nelle vicinanze
L'autorizzazione NEARBY_WIFI_DEVICES
fa parte della sezione Dispositivi nelle vicinanze
gruppo di autorizzazioni. Questo gruppo, aggiunto in Android 12 (livello API 31), include anche
autorizzazioni relative al Bluetooth e alla banda ultralarga. Quando richiedi qualsiasi combinazione di autorizzazioni da questo gruppo di autorizzazioni, 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 Dispositivi nelle vicinanze.
autorizzazioni come gruppo; Ad esempio, gli utenti non possono disattivare l'accesso al Wi-Fi, ma mantenere
Accesso al Bluetooth attivo per una determinata app.
Affermare con chiarezza che la tua app non ricava la posizione fisica
Quando 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, devi dichiararlo con fermezza. Per fare questa affermazione, imposta l'attributo usesPermissionFlags
su
neverForLocation
nel file manifest dell'app, come mostrato nello snippet di codice
seguente. Questa procedura è simile a quella che segui quando
Dichiara che le informazioni del dispositivo Bluetooth non vengono mai utilizzate per la geolocalizzazione:
<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. Ecco alcuni esempi:
metodi della classe WifiManager
:
Inoltre, poiché l'autorizzazione NEARBY_WIFI_DEVICES
è disponibile solo su Android 13 e versioni successive, devi mantenere le dichiarazioni per ACCESS_FINE_LOCATION
per garantire la compatibilità con le versioni precedenti nella tua app. Tuttavia, a condizione che la tua app non si basi su informazioni sulla posizione precise, 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>
Verificare le API che richiedono l'autorizzazione
Se la tua app ha come target Android 13 o versioni successive, devi dichiarare
Autorizzazione NEARBY_WIFI_DEVICES
per chiamare una delle seguenti API Wi-Fi:
WifiManager
WifiAwareManager
WifiAwareSession
WifiP2pManager
WifiRttManager
Flussi di lavoro per l'accesso al Wi-Fi
La figura 1 mostra il flusso di lavoro per l'accesso al Wi-Fi sui dispositivi che eseguono
Android 13 o versioni successive per le app che hanno come target
Android 13 o versioni successive. Ricorda che, se affermi che i tuoi
app non ricava la posizione fisica dalle informazioni del dispositivo Wi-Fi,
devi dichiarare più l'autorizzazione ACCESS_FINE_LOCATION
:
La Figura 2 mostra il flusso di lavoro per l'accesso al Wi-Fi sui dispositivi con Android 12L o versioni precedenti. Nota il fatto che si affidano
Autorizzazione ACCESS_FINE_LOCATION
.