gpt4 book ai didi

android - 连接WIFI时获取SSID

转载 作者:IT王子 更新时间:2023-10-28 23:41:50 26 4
gpt4 key购买 nike

当我的 android 设备连接到 WIFI 时,我正在尝试获取 WIFI 网络的 SSID。

我已经注册了一个监听 android.net.wifi.supplicant.CONNECTION_CHANGE 的 BroadcastReceiver .当 WIFI 断开或重新连接时,我会收到通知。很遗憾,我无法获取网络的 SSID。

我正在使用以下代码来查找 SSID:

WifiManager wifiManager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();

我得到的是字符串 <unknown ssid> 而不是 SSID返回。

这些是 list 中的权限(我添加了 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。

最佳答案

我在广播接收器中监听 WifiManager.NETWORK_STATE_CHANGED_ACTION

if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
NetworkInfo netInfo = intent.getParcelableExtra (WifiManager.EXTRA_NETWORK_INFO);
if (ConnectivityManager.TYPE_WIFI == netInfo.getType ()) {
...
}
}

我检查 netInfo.isConnected()。然后我就可以使用了

WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifiManager.getConnectionInfo();
String ssid = info.getSSID();

更新

从 android 8.0 开始,除非启用了位置服务并且您的应用有权访问它,否则我们将不会获取已连接网络的 SSID。

关于android - 连接WIFI时获取SSID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21391395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com