检测Wifi中的变化

3

我需要检测WiFi开关的状态。为此,我使用了James Montemagno的Connectivity库,但问题在于如果手机可以访问移动网络并且我打开/关闭WiFi,则无法获取ConnectivityChanged事件。

以下是该事件的映射:

    CrossConnectivity.Current.ConnectivityChanged += (sender, args) =>
    {
        WiFiConnected = CrossConnectivity.Current.ConnectionTypes.Contains(ConnectionType.WiFi);
    };

我能检测Wifi的连通状态吗?我想在Xamarin Forms代码中实现,这样就不需要为每个平台都实现一种解决方案。


你解决了这个问题吗? - subin272
我已经尝试使用“ConnectivityTypeChanged”而不是“ConnectivityChanged”。但我面临的问题是,“ConnectivityTypeChanged”事件在更改Wifi / Cellular时会被多次触发。我只需要像“ConnectivityChanged”一样触发一个通知。CrossConnectivity.Current.ConnectivityTypeChanged +=(sender,args)=> { WiFiConnected = CrossConnectivity.Current.ConnectionTypes.Contains(ConnectionType.WiFi); }; - subin272
2个回答

5

这里是您正在寻找的内容


     CrossConnectivity.Current.ConnectivityChanged += (sender, args) =>
            {

                if (args.IsConnected.ToString().Equals("False"))
                {
                    if (CrossConnectivity.Current.ConnectionTypes.Contains(ConnectionType.WiFi))
                    {
                        // WE LOST AN CONNECTION BUT WIFI IS STILL ON 
                    }
                }
                else
                {
                    if (CrossConnectivity.Current.ConnectionTypes.Contains(ConnectionType.WiFi))
                    {
                        // WIFI WAS TURN ON AND WE HAVE A CONNECTION 
                    }
                    else
                    {
                        // WE HAVE A CONNECTION BUT NOT WIFI
                    }
                }
            };

插件链接 https://github.com/jamesmontemagno/ConnectivityPlugin - Artiom
"ConnectivityChanged" 只检查互联网连接是否可用,因此在上述情况下,即使 Wifi 断开连接,移动网络仍然可用,该方法也不会被调用。如何处理这种情况? - subin272

2
我不知道是否有 Xamarin Forms 的解决方案,但是您可以使用特定于平台的方法来实现。在 Android 上使用 BroadcastReceiver.. 对于其他平台,我没有想法..

我会尝试的。谢谢。 - Jens Borrisholt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接