Android использует wifimanager для подключения к защищенной сети WPA-PSK - PullRequest
0 голосов
/ 15 марта 2012

так что я просмотрел все темы здесь и в любом другом месте, куда гугл меня отведет.Но все же у меня возникают проблемы с подключением к сетям WPA PSK.Вот мой код, у меня есть 2 поля edittext, из которых я читаю SSID и PSK и затем один флажок, чтобы выбрать, скрыт SSID или нет.

    EditText mSSID = (EditText) findViewById(R.id.wifiTVssidcurrent);
    String networkSSID = mSSID.getText().toString();
    EditText mWPA = (EditText) findViewById(R.id.wifiTVwpacurrent);
    String networkWPA = mWPA.getText().toString();

    // Update text to show that connection is pending
    TextView wifiStatus = (TextView) findViewById(R.id.wifiTVconnectionstatus);
    wifiStatus.setText("Connecting to " + networkSSID);

    WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    WifiConfiguration wc = new WifiConfiguration(); 
    wc.SSID = "\"".concat(networkSSID).concat("\""); 
    wc.preSharedKey  = "\"".concat(networkWPA).concat("\"");

    CheckBox mSSIDHidden = (CheckBox) findViewById(R.id.wifiCBhiddenssid);
    wc.hiddenSSID = false;
    if (mSSIDHidden.isChecked()) {
        wc.hiddenSSID = true;
    }
    wc.status = WifiConfiguration.Status.ENABLED;         
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
    wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
    wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
    wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
    int res = wifi.addNetwork(wc); 
    Log.d("WifiPreference", "add Network returned " + res ); 
    boolean b = wifi.enableNetwork(res, true);         
    Log.d("WifiPreference", "enableNetwork returned " + b );
    boolean c = wifi.reconnect();
    Log.d("WifiPreference", "reconnect returned " + c );

Что я вижу в телефоне после запуска, это то, чтоAP создается в настройках, но не подключается.И если я попытаюсь использовать созданную точку доступа вручную из настроек впоследствии, я не могу подключиться либо.Но если я создаю точку доступа изнутри настроек, я получаю соединение так, как должно.

Что касается ввода SSID и WPA PSK, я пробовал оба "\" ". Concat (networkSSID) .concat (" \ "");и "\" "+ networkSSID +" \ "";с тем же результатом.

Любые советы будут очень приветствоваться.С наилучшими пожеланиями, Лассе

1 Ответ

4 голосов
/ 28 марта 2012

Снова большое спасибо Райану за предложение прочитать настройки, созданные ОС.

Так что я подумал, что перепробовал все предложенное здесь при переполнении стека. Но эта ветка действительно помогла мне в итоге Настройка Wi-Fi программно с использованием WPA Security в планшете Android Огромное спасибо RYAN за предоставление советов по чтению одной точки доступа, а затем повторение ее. В моем случае оказалось, что мне нужно было добавить. Хотя я настраиваю для WPA, мне все еще нужно было добавить позволенныеGroupCiphers WEP40 и WEP104, и у меня было только

`wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); //So I also added 
 wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);`
...