Android - 检测与特定wifi ssid断开连接的正确方法?

See*_*vil 4 android broadcastreceiver android-wifi

我已经看到几个BroadcastReciever示例来检测wifi断开连接,但它们似乎都没有正常工作(例如,每个断开连接触发两次)并且没有提到检查ssid,这是否可能?

所以,为了澄清,我想检测与特定ssid的断开连接.在设备上禁用实际断开连接而不禁用wifi.

谢谢

编辑:重新开放作为实在不行就两个,我们就来测试设备.

See*_*vil 8

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
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)