2011-06-16 39 views
6

我有一位傾聽者正在監聽連接變化,特別是從GSM到WIFI。 現在我想記錄用戶連接的WIFI,特別是WIFI的加密類型(無,WEP,WPA,WPA2,...)。Android:如何獲得當前的Wifi加密?

聽者完美地工作,但我找不到任何方式獲得當前Wifi的加密類型。

感謝您的幫助。

回答

7

使用WifiManager獲取當前連接的詳細信息,然後獲得一個WifiConfiguration應該給你進一步的信息。

WifiManager wifiManager= (WifiManager) getSystemService(Context.WIFI_SERVICE); 
WifiInfo wi = WifiManager.getConnectionInfo(); 
if(wi != null) 
{ 
    WifiConfiguration activeConfig = null; 
    for(WifiConfiguration conn : wifiManager.getConfiguredNetworks()) 
    { 
     if(conn.status == WifiConfiguration.Status.CURRENT) 
     { 
      activeConfig = conn; 
      break; 
     } 
    } 
    if(activeConfig != null) 
    { 
     // Analyse encryption of connected network here. 
    } 
} 
+0

謝謝!我發現,但似乎獲得WifiConfiguration的唯一方法似乎是WindowManager.getConfiguredNetworks(),它返回一個List 。我現在可以通過BSSID獲得當前的Wifi,或者當前連接的網絡始終是列表中的第一個? – Tobi 2011-06-16 13:10:12

+3

謝謝你的幫助,馬克。我只是通過WifiConfiguration.status標誌找到了另一種獲取當前wifi的方法。這必須等於WifiConfiguration.Status.CURRENT – Tobi 2011-06-16 13:17:20

+0

好找!我沒有意識到這一點。它應該使代碼略微更高效。如果您發現它有幫助,請「接受」答案。 – 2011-06-16 13:20:37