我已经看到了几个 BroadcastReciever 示例来检测 wifi 断开连接,但它们似乎都没有正常工作(例如,每次断开连接触发两次)并且没有提到检查 ssid,这甚至可能吗?
所以只是为了澄清,我想检测与特定 ssid 的断开连接。在设备上禁用了实际断开连接而不是 wifi。
谢谢
编辑:重新打开,因为我们必须测试的两个设备都不起作用。
最佳答案
NETWORK_STATE_CHANGED_ACTION 是最终的答案。当另一个应用程序(也将监听类似事件)被卸载时,注册此事件有问题的设备开始工作!不知道应用程序如何或为什么会阻止向另一个应用程序注册的事件。最终的解决方案是;
String action = intent.getAction();
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION))
{
WifiManager manager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
NetworkInfo.State state = networkInfo.getState();
if(state == NetworkInfo.State.CONNECTED)
{
String connectingToSsid = manager.getConnectionInfo().getSSID().replace("\"", "");
WifiStateHistory.recordConnectedSsid(connectingToSsid);
//connected
}
if(state == NetworkInfo.State.DISCONNECTED)
{
if(manager.isWifiEnabled())
{
String disconnectedFromSsid = WifiStateHistory.getLastConnectedSsid();
//disconnected
}
}
}
关于Android - 检测与特定 wifi ssid 断开连接的正确方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15761132/