Permisos de wi-fi en android: información

En el entorno de los dispositivos Android, el acceso a Wi-Fi es esencial para navegar por internet, descargar archivos, transmitir contenido multimedia y mucho más. Sin embargo, la seguridad de los usuarios es primordial, por lo que Google ha implementado un sistema de permisos para controlar cómo las aplicaciones pueden acceder a las redes Wi-Fi. Este artículo te guiará a través de los permisos necesarios para acceder a Wi-Fi en Android, desde las versiones anteriores hasta las más recientes, así como las mejores prácticas para garantizar la seguridad de tus datos.

Índice de Contenido
  1. Permisos de Wi-Fi en Android 13 y versiones posteriores
    1. ¿Por qué se necesita el permiso NEARBY_WIFI_DEVICES?
    2. Declarando el permiso NEARBY_WIFI_DEVICES
    3. Permisos de dispositivos cercanos
  2. Permisos de Wi-Fi en versiones anteriores de Android
  3. API de Wi-Fi que requieren permisos
  4. Flujos de trabajo del acceso a Wi-Fi
    1. Android 13 o versiones posteriores
    2. Android 12L o versiones anteriores
  5. Consultas habituales
    1. ¿Qué sucede si mi aplicación intenta acceder a Wi-Fi sin el permiso correcto?
    2. ¿Cómo puedo verificar si mi aplicación necesita el permiso NEARBY_WIFI_DEVICES?
    3. ¿Puedo desactivar el acceso a Wi-Fi para una aplicación específica?
    4. ¿Qué sucede si mi dispositivo Android enciende automáticamente el Wi-Fi?

Permisos de Wi-Fi en Android 13 y versiones posteriores

Android 13 (nivel de API 33) y versiones posteriores introdujeron un nuevo permiso llamado NEARBY_WIFI_DEVICES, que reemplaza al permiso ACCESS_FINE_LOCATION para las aplicaciones que necesitan acceder a dispositivos Wi-Fi cercanos. Este cambio se implementó para mejorar la privacidad de los usuarios, ya que el permiso ACCESS_FINE_LOCATION podía utilizarse para obtener la ubicación precisa del usuario a través de las redes Wi-Fi.

El permiso NEARBY_WIFI_DEVICES está diseñado para ser más específico y solo permite a las aplicaciones acceder a información sobre dispositivos Wi-Fi cercanos, como su nombre de red (SSID), dirección MAC y señal de fuerza. No proporciona información sobre la ubicación física del usuario.

¿Por qué se necesita el permiso NEARBY_WIFI_DEVICES?

Las aplicaciones que necesitan administrar conexiones Wi-Fi, como las que se utilizan para escanear redes Wi-Fi disponibles, conectarse a redes Wi-Fi específicas o compartir archivos a través de Wi-Fi Direct, necesitan este permiso.

Declarando el permiso NEARBY_WIFI_DEVICES

Para solicitar el permiso NEARBY_WIFI_DEVICES, debes incluirlo en el archivo de manifiesto de tu aplicación. Además, debes declarar que tu aplicación nunca obtiene información de ubicación física de las API de Wi-Fi. Esto se hace estableciendo el atributo usesPermissionFlags a neverForLocation en el archivo de manifiesto de tu aplicación, como se muestra en el siguiente fragmento de código:

<manifest ...> <uses-permission android:name= android.permission.nearby_wifi_devices android:usesPermissionFlags= neverforlocation /> <application ...> ... </application></manifest>

Permisos 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 relacionados con Bluetooth y la banda ultraancha. Cuando solicitas cualquier combinación de permisos de este grupo, el sistema muestra un solo diálogo de tiempo de ejecución y le pide al usuario que apruebe el acceso de tu aplicación a dispositivos cercanos. En la configuración del sistema, el usuario debe habilitar e inhabilitar los permisos de Dispositivos cercanos como grupo. Por ejemplo, los usuarios no pueden inhabilitar el acceso a Wi-Fi, pero mantener habilitado el acceso a Bluetooth para una aplicación determinada.

Permisos de Wi-Fi en versiones anteriores de Android

En versiones anteriores de Android (antes de Android 13), las aplicaciones que necesitaban acceder a dispositivos Wi-Fi cercanos tenían que declarar el permiso ACCESS_FINE_LOCATION. Este permiso permitía a las aplicaciones obtener la ubicación precisa del usuario, lo que planteaba preocupaciones de privacidad.

Sin embargo, si tu aplicación se orienta a versiones anteriores de Android y no necesita información de ubicación precisa, puedes configurar la versión máxima del SDK de 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>

Esto asegurará que tu aplicación solo solicite el permiso ACCESS_FINE_LOCATION en dispositivos que ejecutan Android 12 o versiones anteriores. En dispositivos que ejecutan Android 13 o versiones posteriores, la aplicación utilizará el permiso NEARBY_WIFI_DEVICES.

API de Wi-Fi que requieren permisos

Algunas API de Wi-Fi requieren el permiso ACCESS_FINE_LOCATION, incluso cuando tu aplicación se orienta a Android 13 o versiones posteriores. Los ejemplos incluyen los siguientes métodos de la clase WifiManager :

  • GetScanResults() : Obtiene los resultados de la última exploración de Wi-Fi.
  • StartScan() : Inicia una exploración de Wi-Fi.
  • GetWifiState() : Obtiene el estado actual de la conexión Wi-Fi.
  • GetConnectionInfo() : Obtiene información sobre la conexión Wi-Fi actual.

Si tu aplicación necesita utilizar alguna de estas API, debes declarar el permiso ACCESS_FINE_LOCATION en el archivo de manifiesto, incluso si también declaras el permiso NEARBY_WIFI_DEVICES. Sin embargo, si tu aplicación no necesita información de ubicación precisa, puedes configurar la versión máxima del SDK de este permiso en 32 para evitar solicitarlo en dispositivos que ejecutan Android 13 o versiones posteriores.

add permission turn on wi-fi - How to fix you don't have permission to change WiFi network

Flujos de trabajo del acceso a Wi-Fi

El flujo de trabajo del acceso a Wi-Fi en Android depende de la versión del sistema operativo y la orientación de la aplicación. A continuación, se muestran los flujos de trabajo para las aplicaciones orientadas a Android 13 o versiones posteriores:

Android 13 o versiones posteriores

En dispositivos que ejecutan Android 13 o versiones posteriores, las aplicaciones orientadas a Android 13 o versiones posteriores deben solicitar el permiso NEARBY_WIFI_DEVICES para acceder a información de Wi-Fi. Si la aplicación declara que nunca obtiene información de ubicación física de las API de Wi-Fi, no es necesario declarar el permiso ACCESS_FINE_LOCATION.

Android 12L o versiones anteriores

En dispositivos que ejecutan Android 12L o versiones anteriores, las aplicaciones orientadas a Android 13 o versiones posteriores deben solicitar el permiso ACCESS_FINE_LOCATION para acceder a información de Wi-Fi. Esto se debe a que el permiso NEARBY_WIFI_DEVICES no está disponible en estas versiones de Android.

Consultas habituales

¿Qué sucede si mi aplicación intenta acceder a Wi-Fi sin el permiso correcto?

Si tu aplicación intenta llamar a una API de Wi-Fi sin el permiso correcto, se producirá un error SecurityException. Esto evitará que tu aplicación acceda a la información de Wi-Fi y puede provocar un comportamiento inesperado.

¿Cómo puedo verificar si mi aplicación necesita el permiso NEARBY_WIFI_DEVICES?

Si tu aplicación necesita acceder a información de Wi-Fi, como escanear redes Wi-Fi disponibles, conectarse a redes Wi-Fi específicas o compartir archivos a través de Wi-Fi Direct, entonces necesita el permiso NEARBY_WIFI_DEVICES. Si tu aplicación no necesita acceder a información de Wi-Fi, entonces no necesita este permiso.

¿Puedo desactivar el acceso a Wi-Fi para una aplicación específica?

Sí, puedes desactivar el acceso a Wi-Fi para una aplicación específica en la configuración de tu dispositivo. Para hacerlo, ve a Configuración > Aplicaciones y notificaciones > Permisos > Ubicación y desactiva el acceso a Wi-Fi para la aplicación específica.

¿Qué sucede si mi dispositivo Android enciende automáticamente el Wi-Fi?

Si tu dispositivo Android enciende automáticamente el Wi-Fi, es posible que una aplicación tenga el permiso CHANGE_WIFI_STATE. Este permiso permite a las aplicaciones habilitar o deshabilitar el Wi-Fi en tu dispositivo. Para evitar que esto suceda, puedes revisar la lista de aplicaciones que tienen este permiso y revocar el permiso para las aplicaciones que no necesitas que lo tengan.

Comprender los permisos de Wi-Fi en Android es crucial para garantizar la seguridad de tus datos y la privacidad de tu información. Al solicitar los permisos correctos y declarar que tu aplicación no obtiene información de ubicación física de las API de Wi-Fi, puedes proteger la privacidad de tus usuarios y garantizar que tu aplicación funcione correctamente.

Recuerda que las políticas de privacidad de Google están en constante evolución, por lo que es importante mantenerse actualizado sobre los últimos cambios y las mejores prácticas para el manejo de permisos en Android.

Si quieres conocer otros artículos parecidos a Permisos de wi-fi en android: información puedes visitar la categoría Seguridad wi-fi.

Subir