Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


WifiConfiguration habilita la red en Lollipop

Yo estaba trabajando en proyecto Wifi, hay un módulo que permiten al usuario unirse wifi programatically.

En kitkat y por debajo de su trabajo con éxito, pero en Lollipop no funciona.

  • Cómo utilizar AsyncTask correctamente en Android
  • Android: obtener Viewgroup de la vista?
  • Rellenar lista de vista personalizada mediante ListFragment
  • Ejecutar varias instancias de aplicación para Android, como espacio paralelo
  • Cómo configurar el enfoque de un widget de botón mediante programación?
  • Parallax XY y cálculo de la rotación
  • Aquí está el código:

    WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiConfiguration wifiConfiguration = new WifiConfiguration(); wifiConfiguration.SSID = "\"testSSID\""; wifiConfiguration.hiddenSSID = true; wifiConfiguration.status = WifiConfiguration.Status.ENABLED; wifiConfiguration.allowedKeyManagement .set(WifiConfiguration.KeyMgmt.NONE); netId = wifiManager.addNetwork(wifiConfiguration); Log.d("WifiPreference", "add Network returned " + netId); boolean checkEnableWifi = wifiManager.enableNetwork(netId, true); Log.d("WifiPreference", "enableNetwork returned " + checkEnableWifi); 

    Mi dispositivo probado es nexus 5 número de construcción LRX21O, ¿hay algo mal en mi código o error en Lollipop?

  • ¿Cómo abrir una nueva actividad haciendo clic en un elemento de listview?
  • Soporte de RTL: deshabilitarlo sólo para componentes de interfaz de usuario específicos
  • OpenCV en Android Studio
  • Vista de galería personalizada en android
  • ¿Qué significa AdapterView <?> En el método OnitemClick ()? ¿Cuál es el uso de otros parámetros en ella?
  • Análisis de un ID de cadena con SugarORM y GSON
  • 5 Solutions collect form web for “WifiConfiguration habilita la red en Lollipop”

    Se enfrentó a un problema similar en Lollipop.

    Deshabilitar otras redes de forma manual, un administrador de wifi de reconectar resolvió el problema.

     boolean enableNework(String ssid, Context cxt) { boolean state = false; WifiManager wm = (WifiManager) cxt.getSystemService(Context.WIFI_SERVICE); if (wm.setWifiEnabled(true)) { List<WifiConfiguration> networks = wm.getConfiguredNetworks(); Iterator<WifiConfiguration> iterator = networks.iterator(); while (iterator.hasNext()) { WifiConfiguration wifiConfig = iterator.next(); if (wifiConfig.SSID.equals(ssid)) state = wm.enableNetwork(wifiConfig.networkId, true); else wm.disableNetwork(wifiConfig.networkId); } wm.reconnect(); } return state; } 

    Prueba esto. No deshabilite otras redes guardadas. Ya que esto impedirá el retorno del wifi en otras redes cuando su red seleccionada no esté disponible. Juega con la prioridad.

     /* * Max priority of network to be associated. */ private static final int MAX_PRIORITY = 999999; /** * Allow a previously configured network to be associated with. */ public boolean enableNetwork(String ssid) { boolean state = false; List<WifiConfiguration> list = wifiManager.getConfiguredNetworks(); if(list != null && list.size() > 0) { for( WifiConfiguration i : list ) { if(i.SSID != null && i.SSID.equals(convertToQuotedString(ssid))) { wifiManager.disconnect(); int newPri = getMaxPriority() + 1; if(newPri >= MAX_PRIORITY) { // We have reached a rare situation. newPri = shiftPriorityAndSave(); } i.priority = newPri; wifiManager.updateNetwork(i); wifiManager.saveConfiguration(); state = wifiManager.enableNetwork(i.networkId, true); wifiManager.reconnect(); break; } } } return state; } private int getMaxPriority() { final List<WifiConfiguration> configurations = wifiManager.getConfiguredNetworks(); int pri = 0; for (final WifiConfiguration config : configurations) { if (config.priority > pri) { pri = config.priority; } } return pri; } private void sortByPriority(final List<WifiConfiguration> configurations) { Collections.sort(configurations, new Comparator<WifiConfiguration>() { @Override public int compare(WifiConfiguration object1, WifiConfiguration object2) { return object1.priority - object2.priority; } }); } private int shiftPriorityAndSave() { final List<WifiConfiguration> configurations = wifiManager.getConfiguredNetworks(); sortByPriority(configurations); final int size = configurations.size(); for (int i = 0; i < size; i++) { final WifiConfiguration config = configurations.get(i); config.priority = i; wifiManager.updateNetwork(config); } wifiManager.saveConfiguration(); return size; } /** * Add quotes to string if not already present. * * @param string * @return */ public static String convertToQuotedString(String string) { if (TextUtils.isEmpty(string)) { return ""; } final int lastPos = string.length() - 1; if (lastPos > 0 && (string.charAt(0) == '"' && string.charAt(lastPos) == '"')) { return string; } return "\"" + string + "\""; } 

    Intente agregar wifiManager.setWifiEnabled (true); Al final de su código.

    Intente establecer false donde está intentando cambiar otras redes.

     wifiManager.enableNetwork(netId, false); 

    Y una cosa más si su addNetwork tiene éxito entonces usted puede proceder con el resto. Si devuelve un -1 no puede llamar a enableNetwork ya que el netId que está utilizando sería -1. Así que lo que idealmente podría hacer es

     netId = wifiManager.addNetwork(wifiConfiguration); if(netId >= 0){ Log.d("WifiPreference", "add Network returned " + netId); boolean checkEnableWifi = wifiManager.enableNetwork(netId, true); Log.d("WifiPreference", "enableNetwork returned " + checkEnableWifi); } 

    Tenía que hacer frente a una situación en Nexus 7 que conecta a la impresora del hp en el cual el método enablenetwork(id,true) devuelve verdadero pero todavía no conecta. Respuesta de @Santosh y @Seraphim me ayudó .. Desactivar cada red y habilitar sólo el SSID requerido funcionó.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.