当我的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();
Run Code Online (Sandbox Code Playgroud)
而不是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"/>
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我怎样才能获得实际的SSID?在建立连接之前,广播是否已提前播出?我应该听另一个广播吗?我只对WIFI连接感兴趣,而不是3G连接.
更新:我刚刚检查过,wifiInfo.getBSSID()
返回null.