App destinate ad Android 13 (livello API 33) o versioni successive che gestiscono le connessioni Wi-Fi
deve richiedere
NEARBY_WIFI_DEVICES
autorizzazione di runtime. Questo
che consente di giustificare più facilmente l'accesso di un'app ai dispositivi Wi-Fi nelle vicinanze.
versioni precedenti di Android, queste app dovevano dichiarare
ACCESS_FINE_LOCATION
l'autorizzazione di accesso.
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 uno qualsiasi
di autorizzazioni del gruppo di autorizzazioni, il sistema mostra
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
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 vivamente di
dichiararlo. Per creare questa asserzione, imposta l'attributo usesPermissionFlags
su
neverForLocation
nel file manifest dell'app, come mostrato nel seguente codice
snippet di codice. 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
L'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
Per Android 13 e versioni successive, devi conservare eventuali dichiarazioni per
ACCESS_FINE_LOCATION
per offrire la compatibilità con le versioni precedenti dell'app. Tuttavia, se la tua app
non si basa in altro modo
informazioni sulla posizione esatta, puoi
imposta la versione massima dell'SDK di questa autorizzazione su 32
, come mostrato in
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
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 che eseguono
12 litri o inferiore. Nota il fatto che si affidano
Autorizzazione ACCESS_FINE_LOCATION
.