我已经看到了几个 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/

10-10 12:50