从配置的网络获取安全类型?

时间:2015-06-15 19:20:20

标签: android wifi android-wifi wifimanager

我正在寻找一种从已配置但目前不在范围内的网络获取安全类型的方法。也就是说,WifiConfiguration返回WifiManager#getConfiguredNetworks()而不是WifiManager#getScanResults()。当然,这只能说明网络最后一次使用时所使用的安全类型。这对我的目的来说已经足够了。

getConfiguredNetworks()州的文档:

  

仅填写以下字段:networkId,SSID,BSSID,priority,allowedProtocols,allowedKeyManagement,allowedAuthAlgorithms,allowedPairwiseCiphers,allowedGroupCiphers

因此,this question和其他喜欢的答案都不会有效,因为它取决于wepKeys字段。 (它也没有自己的SECURITY_EAP结果的开关案例。)

这是否可以使用getConfiguredNetworks()提供的有限信息?

2 个答案:

答案 0 :(得分:0)

这是我天真的解决方案。从我对wifi安全的了解很少,我预感到这些条件是必要的,但不足以确定安全类型。也许知道更多的人可以详细说明。

private static String getSecurity(final WifiConfiguration network) {
    if(network.allowedGroupCiphers.get(GroupCipher.CCMP)) {
        return "WPA2";
    }
    else if(network.allowedGroupCiphers.get(GroupCipher.TKIP)) {
        return "WPA";
    }
    else if(network.allowedGroupCiphers.get(GroupCipher.WEP40)
            || network.allowedGroupCiphers.get(GroupCipher.WEP104)) {
        return "WEP";
    }
    else return "NONE";
}

答案 1 :(得分:0)

如果您已添加配置,则配置仅在您的配置列表中。你是对的,其他方法在这种情况下不起作用。我能想到的唯一方法就是你在范围内添加了配置,但之后使用了Forget功能。现在您已超出范围,您无法使用ScanResult,但您也没有配置中的信息来确定安全性是什么。