wifi加密類型

最近開發(fā)wifi方面的功能,需要根據(jù)wifi加密類型來展現(xiàn)UI。遇到了一個比較蛋疼的問題:如何判斷wifi加密類型

  • wifi的管理需要通過WifiManager來操作
WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
  • 開啟和關(guān)閉wifi
mWifiManager.setWifiEnabled(enabled);
  • 掃描wifi列表
List<ScanResult> scanResults= mWifiManager.getScanResults();

前面這幾步非常簡單,現(xiàn)在問題來了,數(shù)據(jù)已經(jīng)拿到,那么如何判斷吶?

wifi的加密類型是通過ScanResult 對象的capabilities字段來獲取的,先看下官方的介紹:

注釋里解釋這個字段

Describes the authentication, key management, and encryption schemes supported by the access point.

描述了認(rèn)證、密鑰管理、接入點所支持的加密方案。

并沒有提供如何區(qū)分加密類型的標(biāo)準(zhǔn),通過搜索,網(wǎng)上的判斷方法多數(shù)是這么寫的

if (capabilities.contains("WEP")) {
    ...
} else if (capabilities.contains("PSK")) {
    ...
} else if (capabilities.contains("EAP")) {
    ...
} else {
    //不加密
}

由于自己的電腦開啟wifi熱點有些問題,只是拿了兩部手機(jī)和小米隨身wifi進(jìn)行測試,獲取的capabilities字段的值如下:

//一些加密wifi獲取的值
[WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]
[WPA2-PSK-CCMP][WPS][ESS]
[WPA2-PSK-CCMP][ESS]

//Android手機(jī)(魅族和小米)共享的不加密wifi獲取的值
[WPS][ESS]

//小米隨身wifi(usb硬件)共享的不加密wifi獲取的值
[ESS]

用上面的判斷方法來匹配加密類型貌似沒有問題,個人感覺這不是一個很好的解決方案。不加密的情況,這里僅僅測試了兩部Android手機(jī)和小米隨身wifi,就出現(xiàn)了不同的值,會不會出現(xiàn)其它的值?這是個疑問。如果您有更好的方法,歡迎指正!

參考鏈接

http://stackoverflow.com/questions/11956874/scanresult-capabilities-interpretation
http://stackoverflow.com/questions/10762533/constructing-a-wificonfiguration-from-a-scanresult-or-interpreting-scanresults

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容