当我的 android 设备连接到 WIFI 时,我正在尝试获取 WIFI 网络的 SSID。
我已经注册了一个 BroadcastReceiver 来监听android.net.wifi.supplicant.CONNECTION_CHANGE
. 当 WIFI 断开或重新连接时,我会收到通知。不幸的是,我无法获得网络的 SSID。
我正在使用以下代码查找 SSID:
WifiManager wifiManager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
我取回了字符串,而不是 SSID <unknown ssid>
。
这些是清单中的权限(我添加了 ACCESS_NETWORK_STATE 只是为了检查,我实际上并不需要它)
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
为什么会这样?如何获取实际的 SSID?在建立连接之前,广播是否提前触发?还有其他广播我应该听吗?我只对 WIFI 连接感兴趣,对 3G 连接不感兴趣。
更新:我刚刚检查过,wifiInfo.getBSSID()
返回 null。