我正在嘗試開發一個小應用程序,我可以從掃描的網絡列表中掃描並連接到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. 以編程方式連接到BlackBerry的特定WiFi網絡
- 4. 如何使用Apple SDK以編程方式檢測和連接到Wifi網絡
- 5. 以編程方式安卓WiFi連接
- 6. 如何以編程方式掃描,查找並連接到開放式WiFi AP?
- 7. 如何以編程方式關閉網絡連接,藍牙和WIFI?
- 8. Android - 以編程方式連接到wifi
- 9. 連接到WiFi網絡編程
- 10. 如何以編程方式打開「網絡連接」窗口
- 11. 通過WiFi信號連接iPhone而無需加入WiFi網絡
- 12. 如何以編程方式顯示要連接的Wifi網絡列表?
- 13. 如何以編程方式連接到Wi-Fi網絡?
- 14. 如何檢測WiFi網絡,而無需通過Unity與iOS和Android連接?
- 15. 如何以編程方式確定android是否連接到wifi?
- 16. 如何以編程方式連接wps到wifi
- 17. 以編程方式斷開網絡連接
- 18. 上連接到WiFi網絡
- 19. Android - 仍然無法以編程方式刪除Wifi網絡
- 20. 如何以編程方式連接和斷開Twitter帳戶到我的網站
- 21. 以編程方式連接到現有網絡
- 22. 以編程方式連接到另一個網絡運營商
- 23. 連接到開放WiFi
- 24. 如何以編程方式在Android中搜索並連接到特定的WiFi網絡
- 25. 獲取可用的wifi連接後以編程方式連接特定的WiFi
- 26. 未能以編程方式連接到Android中的特定WiFi
- 27. 如何連接到QT或Windows API中的無線WIFI網絡?
- 28. 如何獲得掃描的wifi網絡安全類型?在Android中使用WiFi連接到特定網絡所需的網絡配置是什麼?
可能複製http://stackoverflow.com/questions/6866153/android-determine-security-type-of-wifi-networks-in-range-without-connectingt – dasar 2014-09-04 10:20:08