【发布时间】:2015-08-03 13:03:14
【问题描述】:
我们有一个应用程序可以扫描可用的 wifi 网络。我们收到报告称该应用正在记录具有空 BSSID 的 Wifi 条目,尽管请求者状态为“已完成”
即
WifiInfo info = mWifiManager.getConnectionInfo();
String BSSID = info.getBSSID();
SupplicantState state = info.getSupplicantState();
这里的 BSSID 为 null,但请求者状态为 COMPLETED
文档指出,如果没有可用的网络,BSSID 为空: http://developer.android.com/reference/android/net/wifi/WifiInfo.html#getBSSID()
虽然请求者状态是这样定义的: http://developer.android.com/reference/android/net/wifi/SupplicantState.html
除非我的理解有误,否则如果设备已连接到 wifi 网络,那么 BSSID 肯定应该可用吗?如果请求者状态为 COMPLETED,为什么 BSSID 会为空?
已编辑:为清楚起见,我并不真正关心保证 BSSID 不为空,这不是我的问题的重点。我们正在收集数据以进行广泛分析,如果 BSSID 为空,那就这样吧,但令人困惑的地方在于,尽管请求者已完成,但它仍为空。我真的不确定这两个结果是如何调和的。如需更多信息,我们已确保我们拥有 wifi 权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
我们没有以遗漏的方式允许网络状态:
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"
android:required="true" />
ACCESS_NETWORK_STATE 不在我们的清单中。
那么,如果用户连接到移动网络(比如 3G),那么请求者状态会返回 COMPLETED,但是由于我们没有权限,我们无法获得 BSSID?
【问题讨论】: