2014-10-17 46 views
0

我使用下面的代碼檢索連接無線網絡的加密類型,無法獲取當前連接的無線網絡支持的加密類型信息

代碼片段:

 List<WifiConfiguration> wifiConfigs = wifiMgr.getConfiguredNetworks(); 

     if (wifiConfigs != null && wifiConfigs.size() > 0) { 
      for (WifiConfiguration config : wifiConfigs) { 
       if (config != null && ssid.equalsIgnoreCase(config.SSID)) { 

        if (config.allowedKeyManagement.get(KeyMgmt.WPA_PSK)) { 
         encryptionType.append("WPA_PSK"); 
        } 
        if (config.allowedKeyManagement.get(KeyMgmt.WPA_EAP)) { 
         encryptionType.append(" WPA_EAP"); 
        } 
        if (config.allowedKeyManagement.get(KeyMgmt.IEEE8021X)) { 
         encryptionType.append(" IEEE8021X"); 
        } else { 
         if (config.wepKeys[0] != null) { 
          return "WEP"; 
         } else { 
          return "NONE"; 
         } 
        } 
       } 
      } 
     } 
    } 

問題:在Android設備,目前連接的WiFi接入點正在將加密類型顯示爲「802.1x EAP(CCKM)」。但是上面的代碼總是返回「NONE」作爲結果。

如何通過android代碼(可能使用WifiConfiguration)獲得實際值。 在此先感謝。

回答

0

我能得到通過下面的代碼WiFi接入點(目前Android手機設備連接)所支持的加密類型,

List<WifiConfiguration> wifiConfigs = wifiMgr.getConfiguredNetworks(); 
if (wifiConfigs != null && wifiConfigs.size() > 0) { 
    for (WifiConfiguration config : wifiConfigs) { 
     if (config != null && ssid.equalsIgnoreCase(config.SSID)) { 
     for (int k = 0; k < config.allowedKeyManagement.size(); k++) { 
      if (config.allowedKeyManagement.get(k)) { 
       encryptionType.append(" "); 
       if (k < KeyMgmt.strings.length) { 
        encryptionType.append(KeyMgmt.strings[k]); 
        } 
        } 
       } 
      } 
     } 
    } 

希望這有助於你。