2011-12-05 40 views
1

我試圖在Android平板電腦上以編程方式設置WiFi。如果沒有WiFi連接,則添加帶有SSID和從文本文件讀取的密碼的網絡。將此網絡添加到網絡列表並保存密鑰。它正在添加網絡並保存密鑰,但是當我嘗試連接時,它並未連接。讓我知道...在Android平板電腦上以編程方式使用WPA安全設置wifi

public static void setupWifi(Context _context) 
{ 
    if(deviceConfig.wireless_ssid.length()==0) return; 

    WifiManager wifi = (WifiManager)_context.getSystemService(_context.WIFI_SERVICE); 
    WifiConfiguration wc = new WifiConfiguration(); 
    wc.SSID = "\"" + deviceConfig.wireless_ssid + "\""; //IMP! This should be in Quotes!! 
    wc.hiddenSSID = true; 
    wc.status = WifiConfiguration.Status.ENABLED;  
    wc.priority = 40; 
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
    wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 

    wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); 

    wc.preSharedKey = "\"" + deviceConfig.wireless_passkey + "\"";// 

    Log.d("ssid : ", wc.SSID); 

    List<WifiConfiguration> netWorkList = wifi.getConfiguredNetworks(); 
    WifiConfiguration wifiCong = null; 

    if (netWorkList != null) { 
     for(WifiConfiguration item:netWorkList) { 
      if (item.SSID.equalsIgnoreCase("\"" + deviceConfig.wireless_ssid + "\"")) { 
       wifiCong = item; 
      } 
     } 
    } 

    if (wifiCong == null) { 
     boolean res1 = wifi.setWifiEnabled(true); 
     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 es = wifi.saveConfiguration(); 
     Log.d("WifiPreference", "saveConfiguration returned " + es); 
    } 
} 

感謝 基蘭

回答

3

我有這個問題爲好。我解決它的方式是手動將WiFi網絡添加到設備。然後,我列舉了配置並複製了設備添加的成功連接到該網絡的值。

澄清:

手工添加網絡,調用網絡管理員來獲得配置的網絡中找到您的網絡,然後調用干將出你想設置的一切 - 你會找到確切你需要的配置。

void getWifiConfigs() 
{ 
    WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    List<WifiConfiguration> networks = wifi.getConfiguredNetworks(); 
    for (WifiConfiguration current : networks){ 
     //check getters here 
    } 
} 
+0

請問您可以寄給我這個樣本代碼嗎?用編碼 –

+0

如果配置沒有保存在設備上,該怎麼辦? – Ryan

+0

編輯的 – tasomaniac

相關問題