Android 6.0 No se puede agregar WifiConfiguration si ya hay otra WifiConfiguration para ese SSID
Android 6.0 hizo algunos cambios en el comportamiento WiFi y rompe el comportamiento de mi aplicación y no puede encontrar una solución para ello.
Básicamente, para Android 6.0 no se le permite modificar o eliminar objetos WifiConfiguration que no sean creados por su aplicación. Esto significa que necesito crear siempre mis propios objetos WifiConfiguration. Sin embargo, si ya existe una WifiConfiguration para un AP particular hecha por el usuario u otra aplicación, no puedo crear otra para ese AP.
- Devolución de llamada en el dispositivo que se conecta a Wifi Hotspot
- Cómo obtener mi hotspot wifi ssid en mi sistema android actual
- ¿Puedo encontrar la dirección MAC de mi punto de acceso en Android?
- Android :: ¿Cómo desconectarse de una red wifi?
- ¿Cómo pueden los usuarios / desarrolladores configurar la configuración de proxy de Android para las versiones 2.x?
WifiManager.addNetwork (wifiConfiguration) devuelve -1. Esto funciona en todas las versiones anteriores de Android, pero no en Android 6.0
Así que estoy atascado. ¿Se trata de un error de Android? Me imagino que un montón de desarrolladores deberían sufrir de esto si desarrollan aplicaciones para hardware personalizado que tiene su propio punto de acceso WiFi.
- No se puede conectar a un Wifi específico mediante programación en Android
- ¿Cómo puedo ordenar la lista de getScanResults () basada en la intensidad de la señal en orden ascendente?
- Problema al conectar la aplicación de Android al socket mediante la conexión de celda
- No se puede conectar a Android a través de ADB a través de wifi - ¿Necesito acceso root?
- ¿Los dispositivos Android exploran * activamente * para redes WiFi?
- Cómo enviar un archivo de android a la impresora wifi programatically e imprimir el archivo?
- Compruebe la conexión a Internet activa Android
- WifiDirectActivity Alteración de la muestra: Transfiere un ArrayList <String> p2p
Sí. Es un Android 6.0. Bug y parece que se arreglará en una nueva versión.
Creo que ayuda …. Algunos cambios necesarios … WifiConfiguration objetos que no son creados por su aplicación para cada momento. La aplicación no tiene permiso para crear otro objeto … Por lo tanto, necesitamos conectados con netID existente anterior.
public void connectToWifi(){ try{ WifiManager wifiManager = (WifiManager) super.getSystemService(android.content.Context.WIFI_SERVICE); WifiConfiguration wc = new WifiConfiguration(); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); wc.SSID = "\"NETWORK_NAME\""; wc.preSharedKey = "\"PASSWORD\""; wc.status = WifiConfiguration.Status.ENABLED; wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA); wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); wifiManager.setWifiEnabled(true); int netId = wifiManager.addNetwork(wc); if (netId == -1) { netId = getExistingNetworkId(SSID); } wifiManager.disconnect(); wifiManager.enableNetwork(netId, true); wifiManager.reconnect(); } catch (Exception e) { e.printStackTrace(); } } private int getExistingNetworkId(String SSID) { WifiManager wifiManager = (WifiManager) super.getSystemService(Context.WIFI_SERVICE); List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks(); if (configuredNetworks != null) { for (WifiConfiguration existingConfig : configuredNetworks) { if (existingConfig.SSID.equals(SSID)) { return existingConfig.networkId; } } } return -1; }
Y agrega permisos en el archivo Manifest también …
- Control de WebView con bloques de enfoque de eventos de botón multimedia en Android 5
- Entrada de superficie de búfer en MediaCodec