Идентификатор сети -1 для последних версий Android.

Я создал приложение для подключения к выбранному Wi-Fi из списка. Это отлично работает в версии Android 4.1.2 (идентификатор сети = 10), но если я попытаюсь запустить одно и то же приложение в версиях 4.4.2 и 4.4.4, оно покажет значение идентификатора сети как -1.

Мой код для достижения этого:

private void connectToWifi2() {
    // TODO Auto-generated method stub

    // Main method. Write code here.
    WifiConfiguration conf = new WifiConfiguration();
    conf.SSID = String.format("\"%s\"", selWifi.SSID);
    conf.preSharedKey = String.format("\"%s\"", pwd.getText().toString());


    conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
    conf.status = WifiConfiguration.Status.ENABLED;
    conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
    conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);
    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X);
    conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
    conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
    conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
    conf.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);
    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X);

    conf.hiddenSSID = true;
    // remember id
    int netId = wifiManager.addNetwork(conf);
    Log.d("RMGWiFiConfig", "netId returned" + netId);
    if (netId >= 0) {
        Log.i("RMGWiFiConfig", "Connecting with " + selWifi.SSID);
        wifiManager.disconnect();
        Boolean statusInBoolean = wifiManager.enableNetwork(netId, true);
        Log.d("RMGWiFiConfig", "Enabled network returned "
                + statusInBoolean);
        Log.d("RMGWiFiConfig", "Reassociate : " + wifiManager.reassociate());
        Log.d("RMGWiFiConfig", "Reconnect " + wifiManager.reconnect());

    } else {
        Log.d("RMGWifiConfig", "Failed to add network configuration");
    }

}

Я попытался сослаться на приведенные ниже ссылки, но не смог решить проблему. Или, может быть, я не могу правильно вписать решение, представленное в приведенных ниже ссылках. Пожалуйста, сообщите мне об изменениях, которые мне нужно внести в мой код.

Не удается подключить другое устройство Android с Wi-Fi с Android леденец

Android WifiConfiguration показывает -1 для идентификатора. Как исправить, чтобы SSID распознавался?

Android 6.0 Невозможно добавить WifiConfiguration, если есть уже другая конфигурация Wifi для этого SSID

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

WifiConfiguration включает сеть в Lollipop

Android 5.0 Lollipop и 4.4 KitKat игнорируют мою сеть WiFi, функция enableNetwork() бесполезна

Пожалуйста помоги!

Спасибо, Шрути.


person Shruti Joshi    schedule 01.02.2016    source источник
comment
В этой ссылке я нахожу решение для enableNetwork(), но не могу его исправить. Пожалуйста, помогите - stackoverflow.com/questions/ 26986023/   -  person Shruti Joshi    schedule 08.02.2016


Ответы (1)


Я не могу найти очевидной критической причины, но у меня есть аналогичный код, работающий на Android 6.x. Различия, которые я могу найти, следующие:

  • wc.StatusField = WifiStatus.Disabled; (enableNetwork() обновит это позже)
  • wc.PreSharedKey = "\"" + pw + "\"";
  • в конце: wm.SaveConfiguration();

Если бы мне пришлось угадывать, я бы сказал, что это было первое, что вызвало сбой.

person Eliot Gillum    schedule 27.10.2016