2013-11-12 2 views
1

Я могу настроить и добавить сеть (WPA2-PSK), но когда я пытаюсь включить ее (используя WifiManager.enableNetwork), я получаю сбой. В журнале между полезными сообщениями нет полезной отладочной информации (кроме W/ActivityManager﹕ Activity idle timeout). Что бы это могло быть?WifiManager.addNetwork удался, но enableNetwork failed

Вот код:

 String quotedSSID = "\"" + networkSSID + "\""; 

     WifiConfiguration conf = new WifiConfiguration(); 
     conf.SSID = quotedSSID; 
     conf.preSharedKey = "\""+ networkPass +"\""; 
     conf.hiddenSSID = true; 
     conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN); // For WPA2 
     conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
     conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
     conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
     conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
     conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 

     WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); 

     Log.w(MainActivity.APP_TAG, "Adding " + conf.SSID); 
     int networkId = wifiManager.addNetwork(conf); 
     if (networkId < 0) { 
      Log.e(MainActivity.APP_TAG, "Failed to configure " + conf.SSID); 
     } 
     if (!wifiManager.enableNetwork(conf.networkId, true)) { 
      Log.e(MainActivity.APP_TAG, "Failed to enable " + conf.SSID); 
     } else { 
      Log.i(MainActivity.APP_TAG, "Enabled " + conf.SSID); 
     } 

ответ

3

Отвечая на мой собственный вопрос. При включении сети я должен был использовать новый идентификатор сети, т. Е. networkId, а не conf.networkId

+0

+1 хороший подсказку! В моем случае 'wm.getConfiguredNetworks();' возвращает '-1' для идентификатора сети настроенной, дезактивированной сети. Использование идентификатора из 'addNetwork (...)' сделало трюк :) – Trinimon

Смежные вопросы