2015-03-12 2 views
2

У меня есть сервер, который является другим устройством Android. Сервер запускает точку доступа Wi-Fi. На моем клиенте я пытаюсь подключиться автоматически к горячей точке.wifiManager.addNetwork failed

Я называю эту функцию в новую тему в OnStart():

private void enableWifi(){ 
    if(!wifiManager.isWifiEnabled()){ 
     wifiManager.setWifiEnabled(true); 
     Log.i("Wifi", "Wifi enabled"); 
    } 
    if(getNetworkId() == -1){ 
     addNetwork(); 
    } 
    while(!isConnected(context)){ 
     wifiManager.disconnect(); 
     wifiManager.enableNetwork(getNetworkId(),true); 
     wifiManager.reconnect(); 
     Log.i("Wifi", "Connecting to Hotspot"); 
     try { 
      Thread.sleep(TIMEOUT); 
     } catch (InterruptedException e) { 
      Log.e("Wifi", "Thread interrupted: " + e); 
     } 
    } 

    Log.i("Wifi", "Connected to Hotspot"); 
} 

private int getNetworkId(){ 
    List<WifiConfiguration> list = wifiManager.getConfiguredNetworks(); 
    for(WifiConfiguration i : list) { 
     if(i.SSID != null && i.SSID.equals("\"" + wifiName + "\"")) { 
      return i.networkId; 
     } 
    } 
    return -1; 
} 

private void addNetwork(){ 
    WifiConfiguration wifiConfiguration = new WifiConfiguration(); 
    wifiConfiguration.SSID = "\\" + wifiName + "\\"; 
    wifiConfiguration.preSharedKey = "\\" + wifiPassword + "\\"; 
    wifiManager.addNetwork(wifiConfiguration); 
    Log.i("Wifi", "Added Hotspot to configured Networks"); 
} 

wifiManager.addNetwork() возвращает -1

+0

Я предлагаю вам редактировать свой вопрос, чтобы понять, что ваш фактический вопрос является и то, что вы уже пытались решить эту проблему. – mmgross

+0

Какую аутентификацию вы используете? –

ответ

4

Похоже, ваш вопрос в том, что вы кладете обратные косые черты вместо кавычек в SSID и пароль.

Попробуйте это:

wifiConfiguration.SSID = "\"" + wifiName + "\""; 
wifiConfiguration.preSharedKey = "\"" + wifiPassword + "\""; 
Смежные вопросы