我正在尝试连接到特定的BSSID,事实证明这是有问题的。我在ScanResult中获得了要连接的BSSID。然后,我将其传递给将使用BSSID设置WifiConfiguration并连接到它的函数。但是,该设备实际上并未连接到该网络。

为了查看发生了什么,我通过循环遍历WifiManagergetConfiguredNetworks()函数来打印出所有已配置的网络,我发现几乎所有已配置的网络都将null作为BSSID,即使是我手动配置。还有一个网络以any作为其BSSID条目。

确切地说,WifiConfiguration中的BSSID字段是什么意思?该文档指出:


  公共字符串BSSID
  
  设置后,仅当与具有指定BSSID的AP关联时,才应使用此网络配置条目。该值是以太网MAC地址格式的字符串,例如XX:XX:XX:XX:XX:XX:XX,其中每个X是十六进制数字。


anynull当然不是这种格式。这是我用来打印的代码:

for (WifiConfiguration config : wifiManager.getConfiguredNetworks()) {
    Log.d("TEST", config.BSSID + " " + config.status + " " + config.priority + " " + config.SSID);
}


编辑:当我进行WifiConfiguration时,我在打印语句中添加了toString()。调用configuration.BSSID返回null,而toString给我一个BSSID。这里发生了什么?

最佳答案

好吧,似乎由于某种原因,如果您设置了BSSID而没有设置SSID,则Android会感到奇怪。设置SSID也会导致BSSID正确显示。

09-27 12:48