android.net.wifi.STATE_CHANGE并不总是在wifi切换上触发

时间:2014-05-07 13:12:10

标签: android broadcastreceiver android-wifi

我有两个路由器发出具有相同SSID的wifis,我基本上希望我的应用程序告诉我“我已经连接到路由器X”实时。我有一个android.net.wifi.STATE_CHANGE的广播接收器,如果我连接或断开我的任何一个wifis,并按适当更新我的应用程序的显示,它会按预期触发。

然而,如果我强制我的设备从routerA跳转到routerB(例如,当我连接到它时拔掉routerA),android.net.wifi.STATE_CHANGE并不总是被触发。有时它会立即触发(如预期的那样)并报告“与routerA上的testwifi断开连接”,然后“连接到routerB上的testwifi”。有时它会在30秒后触发。有时它不会触发。

我觉得它应该总是被触发,因为两个wifis都有不同的BSSID,因此wifi状态正在改变......这是一个安卓漏洞吗?我错过了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

想出了如何得到我想要的东西虽然我仍然不清楚这是否是一个Android bug。所以基本上,关键是听取

  

android.net.wifi.supplicant.STATE_CHANGE

(即WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)而不是

  

android.net.wifi.STATE_CHANGE

(即WifiManager.NETWORK_STATE_CHANGED_ACTION)。这个android doc page给出了一个恳求者是什么以及为什么这个解决方案有效的想法。