我有2个路由器发出具有相同SSID的wifi,我基本上希望我的应用实时告诉我“我已连接到路由器X”。我有一个android.net.wifi.STATE_CHANGE的广播接收器,如果我连接或断开任何一个wifi都可以按预期触发,并且可以适当更新我的应用程序的显示。
但是,如果我强制我的设备从routerA跳到routerB(例如,在我连接到RouterA的同时拔下routerA),则android.net.wifi.STATE_CHANGE不会总是触发。有时,它会立即触发(如预期的那样),并迅速报告“与routerA上的testwifi断开连接”,然后报告“与routerB上的testwifi连接”。有时会在30秒钟后触发。有时只是不触发。
我觉得应该总是触发它,因为两个wifi都有不同的BSSID,所以wifi状态正在改变...这是一个Android错误吗?我想念什么吗?
谢谢!
最佳答案
弄清楚如何得到我想要的东西,尽管我仍然不清楚这是否是一个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提供了有关请求者的概念以及此解决方案为何起作用的想法。