我正在创建一款Android应用程序,可以让您连接到具有特定BSSID的WiFi。我已经实现了扫描所有WiFi并根据WiFi网络安全类型进行WiFi配置的部分。我还实现了连接到具有特定BSSID的WiFi网络的部分。
但是,我遇到了一个问题:对于开放式网络来说,连接到特定BSSID的操作对于安全网络运行良好,但实际上并不适用于开放式网络,而我不知道原因。事实上,在三星Galaxy S4或更高版本中,使用特定BSSID连接到开放式网络可以正常工作,但在Galaxy S2和S3上却不起作用......这真的很奇怪。在S2和S3上,在连接期间不考虑BSSID。
以下是我用于创建开放式网络配置并尝试使用特定BSSID连接的示例代码:
但是,我遇到了一个问题:对于开放式网络来说,连接到特定BSSID的操作对于安全网络运行良好,但实际上并不适用于开放式网络,而我不知道原因。事实上,在三星Galaxy S4或更高版本中,使用特定BSSID连接到开放式网络可以正常工作,但在Galaxy S2和S3上却不起作用......这真的很奇怪。在S2和S3上,在连接期间不考虑BSSID。
以下是我用于创建开放式网络配置并尝试使用特定BSSID连接的示例代码:
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + wifiItem.getSSID() + "\"";
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiManager wifiManager = (WifiManager) parentActivity.getSystemService(Context.WIFI_SERVICE);
wifiManager.addNetwork(conf);
conf.BSSID = wifiItem.getBSSID();
wifiManager.updateNetwork(conf);
wifiManager.saveConfiguration();
for (WifiConfiguration wifiConfiguration : wifiManager.getConfiguredNetworks()) {
if (wifiConfiguration.SSID.equals("\"" + wifiItem.getSSID() + "\"")) {
wifiManager.disconnect();
wifiConfiguration.BSSID = wifiItem.getBSSID();
wifiManager.updateNetwork(wifiConfiguration);
wifiManager.enableNetwork(wifiConfiguration.networkId, true);
wifiManager.reconnect();
}
如果有人能帮助我就太好了。我花了很多时间,但真的不明白这个问题。