如何在不扫描所有 wifi 网络的情况下获取当前 wifi 连接的加密类型?
How to get encryption type of the current wifi connection without scanning all wifi networks?
有没有办法在 Android 6.0+ 上以编程方式获取 wifi 加密类型(如 WSA、WSA2、WEP)而不使用:
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
List<ScanResult> networkList = wifi.getScanResults();
因为我不想让用户访问位置信息。
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
这似乎是扫描 wifi 网络时的要求。
我希望有一种方法可以做到这一点,而不必像 android.net.wifi.WifiInfo class 中那样扫描所有 wifi 网络。
不,这是不可能的。获得当前 运行 wifi 加密类型的唯一方法是使用 android.net.wifi.WifiInfo
或 ScanResults
使用 iterations
.
您可以使用以下示例获取当前 运行 Wifi 的加密类型 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
}
}
}
}
您可以从这里获取参考文献:
有没有办法在 Android 6.0+ 上以编程方式获取 wifi 加密类型(如 WSA、WSA2、WEP)而不使用:
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
List<ScanResult> networkList = wifi.getScanResults();
因为我不想让用户访问位置信息。
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
这似乎是扫描 wifi 网络时的要求。
我希望有一种方法可以做到这一点,而不必像 android.net.wifi.WifiInfo class 中那样扫描所有 wifi 网络。
不,这是不可能的。获得当前 运行 wifi 加密类型的唯一方法是使用 android.net.wifi.WifiInfo
或 ScanResults
使用 iterations
.
您可以使用以下示例获取当前 运行 Wifi 的加密类型 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
}
}
}
}
您可以从这里获取参考文献: