2016-01-12 3 views
0

Я хочу подключиться к сети Wi-Fi, так что я стараюсь это:Добавление WiFi сетей на Android

WifiConfiguration wfc = new WifiConfiguration(); 

wfc.SSID = "\"".concat(sid).concat("\""); 
wfc.preSharedKey = "\"".concat(pwd).concat("\""); 

WifiManager wfMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
int networkId = wfMgr.addNetwork(wfc); 
if (networkId != -1) { 
    // success, can call wfMgr.enableNetwork(networkId, true) to connect 
} else { 
    // fails 
} 

но NETWORKID всегда -1 где ошибка?

необходимые разрешения, также добавляются в манифесте:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" android:required="true"/> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" android:required="true"/> 
+0

Это может помочь: http://stackoverflow.com/questions/29574730/unable-to-connect-to-new-wifi-network –

ответ

0

В документации сказано:

Добавить новое описание сети к набору настроенных сетей. Поле networkId предоставленного объекта конфигурации игнорируется.

По умолчанию новая сеть будет отмечена ОТКЛЮЧЕНА. Чтобы включить его, называется enableNetwork (int, boolean). Параметры конфигурируют набор переменных, которые описывают конфигурацию, содержащуюся в объекте WifiConfiguration.

Возвращает идентификатор вновь созданного описания сети. Это используется в других операциях для указания сети, на которую будет действовать. Возвращает -1 при ошибке.

Итак, я думаю, что вам нужно сделать, это:

wfMgr.enableNetwork(netId,true); 

NETID: идентификатор сети в списке настроенных сетей.

+0

wfMgr является WifiManager так метод public int addNetwork (Конфигурация WifiConfiguration). Существует не int addNetwork (WifiConfiguration config, boolean xxx) – mrpep

+0

Я отредактировал, он должен был быть enableNetwork ... – Carlos

+0

Если у меня есть netId = -1, я не могу использовать wfMgr.enableNetwork (netId, true); – mrpep

0

Вы можете сделать это

public static void addNewConnection(final String networkSSID, String networkPassword, String securityType, Context context) 
    { 
     // Default settings for all networks 
     wifiConfig = new WifiConfiguration(); 
     wifiConfig.SSID = "\"".concat(networkSSID).concat("\""); 
     wifiConfig.status = WifiConfiguration.Status.ENABLED; 
     wifiConfig.hiddenSSID = true; 
     wifiConfig.priority = 40; 


     connectToNewWifiConfig(wifiConfig, context); 
    } 

    private static boolean connectToNewWifiConfig(final WifiConfiguration wc, Context context) 
    { 
     wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
     boolean success = false; 
     final int actNetId = wifi.getConnectionInfo().getNetworkId(); 
     WifiInfo wifiInfo = wifi.getConnectionInfo(); 
     String prevNetworkSSID = wifiInfo.getSSID(); 
     int netId = wifi.addNetwork(wc); 
     if (netId != ApplicationConstants.INVALID_NETWORK_ID) 
     { 
      success = wifi.saveConfiguration(); 
     } 
     return success; 
    } 
Смежные вопросы