Apps orientadas a Android 13 (nivel de API 33) o versiones posteriores y que administran conexiones Wi-Fi
debe solicitar el
NEARBY_WIFI_DEVICES
permiso de tiempo de ejecución. Esta
permiso facilita la justificación del acceso de una aplicación a dispositivos Wi-Fi cercanos;
en versiones anteriores de Android, estas aplicaciones debían declarar el
ACCESS_FINE_LOCATION
permiso en su lugar.
El permiso forma parte del grupo de dispositivos cercanos
El permiso NEARBY_WIFI_DEVICES
forma parte del grupo de permisos de dispositivos cercanos. Este grupo, que se agregó en Android 12 (nivel de API 31), también incluye permisos que se relacionan con Bluetooth y la banda ultraancha. Cuando solicites
combinación de permisos de este grupo de permisos, el sistema muestra una sola
y le pide al usuario que apruebe el acceso de tu app a dispositivos cercanos.
En la configuración del sistema, el usuario debe habilitar e inhabilitar los dispositivos cercanos.
los permisos como grupo; Por ejemplo, los usuarios no pueden inhabilitar el acceso a Wi-Fi, pero mantener
Acceso Bluetooth habilitado para una app determinada
Declara que la app no obtiene ubicación física
Cuando orientes tu app a Android 13 o versiones posteriores, considera si
siempre obtiene información de ubicación de las API de Wi-Fi; Si no es así, deberías
afirmar eso. Para realizar esta aserción, establece el atributo usesPermissionFlags
en neverForLocation
en el archivo de manifiesto de tu app, como se muestra en el siguiente fragmento de código. Este proceso es similar al que realizas cuando declaras que la información del dispositivo Bluetooth nunca se usa para la ubicación:
<manifest ...> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> <application ...> ... </application> </manifest>
Las versiones anteriores y algunas APIs requieren permiso de ubicación
Varias APIs de Wi-Fi requieren el permiso ACCESS_FINE_LOCATION
, incluso cuando tu
La app se orienta a Android 13 o versiones posteriores. Los siguientes son algunos ejemplos:
de la clase WifiManager
:
Además, debido a que el permiso NEARBY_WIFI_DEVICES
solo está disponible en
Android 13 y versiones posteriores, debes conservar las declaraciones de
ACCESS_FINE_LOCATION
para ofrecer retrocompatibilidad en tu app. Sin embargo, siempre que tu app
no dependa de otro modo
información de ubicación precisa, puedes
establecer la versión máxima del SDK para este permiso en 32
, como se muestra en el
siguiente fragmento de código:
<manifest ...> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="32" /> <application ...> ... </application> </manifest>
Verifica si hay APIs que requieran el permiso
Si tu app se orienta a Android 13 o versiones posteriores, debes declarar el permiso NEARBY_WIFI_DEVICES
para llamar a cualquiera de las siguientes API de Wi-Fi:
WifiManager
WifiAwareManager
WifiAwareSession
WifiP2pManager
WifiRttManager
Flujos de trabajo del acceso a Wi-Fi
La figura 1 muestra el flujo de trabajo de acceso a Wi-Fi en dispositivos que ejecutan
Android 13 o versiones posteriores para apps orientadas
Android 13 o versiones posteriores Ten en cuenta que, siempre que declares que tu app no obtiene la ubicación física de la información del dispositivo de Wi-Fi, ya no es necesario declarar el permiso ACCESS_FINE_LOCATION
:
La figura 2 muestra el flujo de trabajo de acceso a Wi-Fi en dispositivos que ejecutan
12L o versiones anteriores. Ten en cuenta que dependes del permiso ACCESS_FINE_LOCATION
.