我正在尝试开发一个小应用程序,我可以从扫描的网络列表中扫描并连接到WiFi热点。但是对于开放和安全的网络,我已经写了一个密码提示,如果网络是开放的(通过事先知道),我不输入密码,并保持文本空白,然后输入,然后连接。任何人都可以告诉如何以编程方式确定开放和安全的WiFi,这样我就不会要求开放网络的密码,并让它直接连接。请帮忙。 (我不知道哪一个是开放的,哪一个是未来的安全网络,所以我们需要从SSID或其他东西中识别开放和安全的网络)如何区分开放和安全的WiFi网络,而无需以编程方式连接到它?
1
A
回答
4
这里你有能力字段,用于识别网络类型
WifiManager wifimanger = (WifiManager) getSystemService(Context.WIFI_SERVICE);
List<ScanResult> networkList = wifimanger.getScanResults();
if (networkList != null) {
for (ScanResult network : networkList) {
String capabilities = network.capabilities;
Log.w(TAG, network.SSID + " capabilities : " + capabilities);
if (capabilities.toUpperCase().contains("WEP")) {
// WEP Network
} else if (capabilities.toUpperCase().contains("WPA")
|| capabilities.toUpperCase().contains("WPA2")) {
// WPA or WPA2 Network
} else {
// Open Network
}
}
}
0
今天我正在寻找这个问题的答案,但这里和其他类似问题的解决方案使我有点不安全。如果未来创建了新的安全模式?
现在我更愿意做这样的事情:
public WifiSecurityMode testAgainstSecurityModes(WifiSecurityMode... securities) {
for (WifiSecurityMode security : securities) {
if (this.capabilities.toUpperCase().contains(security.getName().toUpperCase())) {
return security;
}
}
return WifiSecurityMode.UNKNOWN;
}
public enum WifiSecurityMode {
WEP("WEP"), WPA("WPA"), WPA2("WPA2"),//....
UNKNOWN ("UNKNOWN");
private String name;
WifiSecurityMode (String name){
this.name = name;
}
public String getName() {
return name;
}
}
//to use it: (WifiInfo are just a class I create to encapsulate the values in a ScanResult object)
public List<WifiInfo> getOpenWifis() {
List<WifiInfo> open = new ArrayList<>();
for (WifiInfo w : wifiInfoList) {
if (w.testAgainstSecurityModes(WifiSecurityMode.WEP, WifiSecurityMode.WPA, WifiSecurityMode.WPA2).equals(WifiSecurityMode.UNKNOWN)) {
open.add(w);
}
}
return open;
}
之后,你做你想做未知什么样的回报。
如果将来创建新的安全模式,则不需要更改testAgainstSecurityModes方法。
相关问题
- 1. 无法以编程方式连接到WIFI网络
- 2. 无法以编程方式配置WiFi开放网络android?
- 3. 如何使用Apple SDK以编程方式检测和连接到Wifi网络
- 4. 如何以编程方式扫描,查找并连接到开放式WiFi AP?
- 5. 如何以编程方式关闭网络连接,蓝牙和WIFI?
- 6. Android - 以编程方式连接到wifi
- 7. 连接到WiFi网络编程
- 8. 通过WiFi信号连接iPhone而无需加入WiFi网络
- 9. 如何以编程方式打开“网络连接”窗口
- 10. 如何以编程方式连接到Wi-Fi网络?
- 11. 以编程方式断开网络连接
- 12. 上连接到WiFi网络
- 13. Android - 仍然无法以编程方式删除Wifi网络
- 14. 以编程方式连接到另一个网络运营商
- 15. 连接到Android外壳的宽带网络和WiFi网络
- 16. SSID VS BSSID:通过Android的编程方式连接到WIFI /使用WifiManager连接到网络
- 17. 如何以编程方式处理WiFi到移动网络交换机?
- 18. 以编程方式在Google Android中连接到WiFi?
- 19. 以编程方式在ios上连接到WiFi
- 20. 如何以编程方式连接到网络共享驱动器?
- 21. 如何获取当前wifi网络的wifi安全类型android
- 22. 如何以编程方式连接到iPhone上的WiFi? (LEAP协议)
- 23. Android - 如何以编程方式打开wifi并等到它未启用
- 24. 如何以编程方式连接到互联网?
- 25. 以编程方式在黑莓上添加一个wifi网络
- 26. 在.NET CF中以编程方式切换WiFi网络?
- 27. 以编程方式/从命令行“修复”网络连接
- 28. 是否有任何API可以区分3G网络和Wifi?
- 29. WiFi P2P没有连接到网络
- 30. 通过Cocoa连接到WIFI网络
可能复制http://stackoverflow.com/questions/6866153/android-determine-security-type-of-wifi-networks-in-range-without-connectingt – dasar 2014-09-04 10:20:08