无法获取当前连接的WiFi支持的加密类型信息

时间:2014-10-17 12:01:09

标签: android encryption

我使用以下代码检索连接的wifi加密类型,

代码段:

        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)。 提前谢谢。

1 个答案:

答案 0 :(得分: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]);
                     }
                   }
               }
           }
        }
     }

希望这会对你有所帮助。