Android - 如何通过编程检测WiFi是否为WEP、WPA或WPA2等类型

12

我正在寻找一种在Android上编程确定设备当前连接的WIFI网络是否通过WEP、WPA或WPA2进行“安全”加密的方法。我已经尝试了谷歌搜索,但是没有找到一种编程方法来确定这一点。我还查看了TelephonyManager (http://developer.android.com/reference/android/telephony/TelephonyManager.html),但它也没有提供这些信息。

谢谢, J


1
你尝试过查看 WifiManager 或者 ConnectivityManager 吗? - VERT9x
1
对于当前网络,您可以在WifiManager的WifiConfiguration中找到所需内容。http://developer.android.com/reference/android/net/wifi/WifiConfiguration.html - Dave S
你有解决这个问题的方案吗? - sureshbabu
1个回答

22

可以使用ScanResult对象实现。

类似以下这样:

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
List<ScanResult> networkList = wifi.getScanResults();

//get current connected SSID for comparison to ScanResult
WifiInfo wi = wifi.getConnectionInfo();
String currentSSID = wi.getSSID();

if (networkList != null) {
    for (ScanResult network : networkList) {
        //check if current connected SSID
        if (currentSSID.equals(network.SSID)) {
            //get capabilities of current connection
            String capabilities =  network.capabilities;
            Log.d(TAG, network.SSID + " capabilities : " + capabilities);

            if (capabilities.contains("WPA2")) {
                //do something
            } else if (capabilities.contains("WPA")) {
                //do something
            } else if (capabilities.contains("WEP")) {
                //do something
            }
        }
    }
}

参考文献:

http://developer.android.com/reference/android/net/wifi/WifiManager.html#getScanResults()

http://developer.android.com/reference/android/net/wifi/ScanResult.html#capabilities

http://developer.android.com/reference/android/net/wifi/WifiInfo.html

android:在不连接到它们的情况下确定范围内wifi网络的安全类型

ScanResult的能力解释


您不需要同时检查WPA和WPA2。仅检查WPA就足够了。 - young_souvlaki
1
@daniel。这显示了接入点支持的功能。如何知道当前连接使用哪种安全性。 - sureshbabu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接