2015-06-15 24 views
2

我正在尋找一種方法來從網絡獲得安全類型,這些網絡已配置但目前不在範圍。也就是從返回的WifiConfiguration,而不是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

這是我天真的解決方案。從我對無線安全知之甚少,我有一種預感,這些條件是必要的,但不足以確定安全類型。也許有人知道更多可以詳細說明。

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,但您也沒有配置信息來確定安全性了。