2012-03-15 1 views
0

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

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 +" \ ""; с тем же результатом.

Любые советы будут очень желанными. С уважением Lasse

+0

Так я думал, что попробовал все предложенные здесь на переполнение стека , Но эта тема на самом деле помогла мне в конце http://stackoverflow.com/questions/8392747/setup-wifi-programatically-using-wpa-security-in-android-tablet Так большое спасибо RYAN за предоставление советов при чтении одного AP, а затем обмануть его. В моем случае оказалось, что мне нужно, чтобы добавить Даже если я устанавливаю для WPA я все еще нужно добавить allowedGroupCiphers WEP40 и WEP104 И у меня была только wc.allowedProtocols.set (WifiConfiguration.Protocol.RSN) ; Итак, я также добавил wc.allowedProtocols.set (WifiConfiguration.Protocol.WPA); – Lasse

ответ

4

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

Поэтому я думал, что попробовал все предлагаемое здесь при переполнении стека. Но эта нить на самом деле помогла мне в конце Setup wifi programatically using WPA Security in android tablet Так большое спасибо RYAN за предоставление советов по чтению одной точки доступа, а затем обмануть ее. В моем случае оказалось, что мне нужно добавить Даже если я устанавливаю для WPA я все еще нужно добавить allowedGroupCiphers WEP40 и WEP104 И я был только

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