gpt4 book ai didi

android - 收到 WIFI_STATE_ENABLED 后直接 WifiInfo SSID null

转载 作者:搜寻专家 更新时间:2023-11-01 09:01:47 29 4
gpt4 key购买 nike

当我的 BroadcastReceiver 直接接收到 WIFI_STATE_ENABLED 时,WifiInfo 的 SSID 值为空。但是,当我添加一个 Thread.Sleep() 800 毫秒时它会起作用。连接 wifi 和 WifiInfo 对象实际获取信息的事件似乎有延迟。下面的代码 fragment 有效:

    else if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
int extraWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);
switch (extraWifiState) {
case WifiManager.WIFI_STATE_ENABLED:
// The SSID is null just after connection is established. This
// event seems over eager.
try {
Thread.sleep(800, 0);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (!wifiFunctions.connectedToGConnectHotspot()) {
removeConnectedNotification();
} else {
settings.setLastNotificationTime(System.currentTimeMillis());
notifyUserOfAvailableHotspot(true);
return;
}
break;

这行得通,但非常不可靠。如果在某些设备上需要更长的时间怎么办?有没有另一种方法来获取连接的 SSID。我查看了 EXTRA_NETWORK_INFO,但它从 API 级别 14 开始被弃用,而且似乎也不包含 SSID。是否有另一种方法可以在不引入人工等待的情况下获取 SSID?

最佳答案

WIFI_STATE_ENABLED 不是您要获取 SSID 时要捕获的操作。您可能更感兴趣的是 NETWORK_STATE_CHANGED .

WIFI_STATE_ENABLED 发生在手机上的 WiFi 设备打开时——此时它不一定连接到任何地方。

编辑:正如评论中所指出的,NETWORK_STATE_CHANGED 也会触发许多其他事件。为了严格监控与 WiFi 接入点的连接,SUPPLICANT_CONNECTION_CHANGE_ACTION倾听才是正确的行为。

关于android - 收到 WIFI_STATE_ENABLED 后直接 WifiInfo SSID null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14517813/

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