2015-06-15 4 views
2

Я ищу способ получить тип безопасности от сетей, которые настроены, но не в настоящее время находятся в диапазоне. То есть от WifiConfiguration, возвращаемого WifiManager#getConfiguredNetworks(), в отличие от WifiManager#getScanResults(). Естественно, это может только указать, какой тип безопасности использовался, когда сеть была последней в диапазоне. Это достаточно хорошо для моих целей.Получить тип безопасности из настроенной сети?

Документы для getConfiguredNetworks() состояния:

только следующие поля заполнены: NETWORKID, SSID, BSSID, приоритет, allowedProtocols, allowedKeyManagement, allowedAuthAlgorithms, allowedPairwiseCiphers, allowedGroupCiphers

Таким образом, принятый ответ this question и другие подобные ему не будут работать, потому что это зависит от поля wepKeys. (Он также не имеет кожуха выключателя для собственного результата SECURITY_EAP.)

Возможно ли использование ограниченной информации от getConfiguredNetworks()?

+0

Возможный дубликат http://stackoverflow.com/questions/6866153/android-determine-security-type-of-wifi-networks-in-range-without-connecting-t –

+0

@KristyWelsh Не дубликат. Этот вопрос касается 'WifiManager # getScanResults()', а не 'WifiManager # getConfiguredNetworks()'. –

+0

Вы хотите проверить keyManagement? –

ответ

0

Это мое наивное решение. Из того, что я знаю о безопасности Wi-Fi, я подозреваю, что эти условия необходимы, но недостаточны для определения типа безопасности. Может быть, кто-то, кто знает больше, может уточнить.

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"; 
} 
0

Конфигурация будет только в вашем списке конфигурации, если вы ее добавили. Вы правы, другие методы не будут работать в этом случае. Единственный способ, которым я могу понять, что вы здесь, это то, что вы добавили конфигурацию, когда она находилась в зоне действия, но позже использовала функцию Forget. Теперь, когда вы находитесь вне пределов досягаемости, вы не можете использовать ScanResult, но у вас нет информации в вашей конфигурации, чтобы определить, что такое безопасность.

Смежные вопросы