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

Я пишу приложение для Android, которое будет подключаться к определенной точке доступа WPA, при подключении оно будет выполнять HTTP-вызов. Это не сохранит конфигурацию сети. Я прочитал почти все сообщения о переполнении стека при подключении к сети Wi-Fi, но не могу найти ответ, который работает для меня. Вот код, который я использую для подключения..

    WifiConfiguration wc = new WifiConfiguration();
    wc.allowedAuthAlgorithms.clear();
    wc.allowedGroupCiphers.clear();
    wc.allowedPairwiseCiphers.clear();
    wc.allowedProtocols.clear();
    wc.allowedKeyManagement.clear();
    wc.SSID = "\"".concat("<ssid>").concat("\"");
    wc.preSharedKey = "\"".concat("<password>").concat("\"");
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
    wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
    wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
    wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); // For WPA2
    wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA); // For WPA
    wc.priority = 0;
    //wc.hiddenSSID = true;
    wc.status = WifiConfiguration.Status.ENABLED;
    // connect to and enable the connection
    WifiManager wifiManager = (WifiManager) getSystemService(this.WIFI_SERVICE);
    int netId = wifiManager.addNetwork(wc);
    boolean wifiEnabled = wifiManager.enableNetwork(netId, true);
    wifiManager.setWifiEnabled(true);
    Log.d("opener", "addNetwork returned " + netId);
    if (netId > 0) {
        wifiId = netId;
    }

Однако netId всегда -1. Я пробовал его на двух разных телефонах (ICS :HTC Rezound и GingerBread :Motorola DroidX ). Оба показывают абсолютно одинаковые результаты. Что я делаю не так?

Редактировать :Я попробовал тот же код с точкой доступа WPA2 и получил очень странные результаты. Когда этот код был запущен, в первый раз он вернул бы -1, но если я вызову тот же метод во второй раз с задержкой в ​​1 секунду, он вернет действительный netId. Итак, вопросы

  1. почему приведенный выше код не подключается к wpa?
  2. в wpa2, почему мне нужно дважды вызвать вышеуказанный метод, чтобы подключиться? Изменить :Я заметил, что мне приходилось подключаться несколько раз, чтобы подключиться. Иногда для подключения требовалось 3 -4 раза. Итак, пока я зацикливаюсь, пока добавление конфигурации не вернет> 0 id.
19
задан tir38 27 February 2019 в 00:48
поделиться