C#:如何在PCL项目中检查互联网接入

C#:如何在PCL项目中检查互联网接入,c#,android,xamarin,xamarin.android,webclient,C#,Android,Xamarin,Xamarin.android,Webclient,我正在尝试检查一个PCL项目中的internet连接,该项目由Xamarin.iOS和Xamarin.Android项目使用。我的研究发现WebClient不能用于PCL,但我还没有找到一个不使用WebClient的令人满意的解决方案。下面是我想使用的代码: try { using (var client = new WebClient()) { using (var stream = client.OpenRead("http://www.google.com"

我正在尝试检查一个PCL项目中的internet连接,该项目由Xamarin.iOS和Xamarin.Android项目使用。我的研究发现WebClient不能用于PCL,但我还没有找到一个不使用WebClient的令人满意的解决方案。下面是我想使用的代码:

try
{
    using (var client = new WebClient())
    {
        using (var stream = client.OpenRead("http://www.google.com"))
        {
            return true;
        }
    }
}
catch
{
    return false;
}

有人知道类似简单的好解决方案吗?

最简单的方法是使用James Montemagno的连接插件:

您安装此,然后调用:

CrossConnectivity.Current.IsConnected
从你的PCL。您甚至可以订阅事件以查看连接何时更改:

CrossConnectivity.Current.ConnectivityChanged += <handler>
CrossConnectivity.Current.ConnectivityChanged+=

这适用于iOS和Android。

最简单的方法是使用James Montemagno的连接插件:

您安装此,然后调用:

CrossConnectivity.Current.IsConnected
从你的PCL。您甚至可以订阅事件以查看连接何时更改:

CrossConnectivity.Current.ConnectivityChanged += <handler>
CrossConnectivity.Current.ConnectivityChanged+=

这适用于iOS和Android。

当我尝试在PCL中实现插件时,我遇到了这个未处理的异常:“System.NotImplementedException:此功能未在此程序集的可移植版本中实现。您应该从主应用程序项目中引用NuGet包,以便引用特定于平台的实现。“我遵循了这个建议,只是在每个特定于平台的项目中分别实现了它,这很有效。很高兴它有效,不要感谢我——感谢詹姆斯·蒙特马诺——他的插件太棒了!我得看看他的其他东西!如果你想要一个跨平台的解决方案,James已经为它写了一个插件!CrossConnectivity.Current.IsConnected如果您已连接到无线网络,但internet已丢失,它将保持连接状态,并向您显示其已连接。可能需要额外的依赖项服务当我尝试在PCL中实现插件时,我会遇到此未处理的异常:“System.NotImplementedException:此功能未在此程序集的可移植版本中实现。您应该从主应用程序项目中引用NuGet包,以便引用特定于平台的实现。“我遵循了这个建议,只是在每个特定于平台的项目中分别实现了它,这很有效。很高兴它有效,不要感谢我——感谢詹姆斯·蒙特马诺——他的插件太棒了!我得看看他的其他东西!如果你想要一个跨平台的解决方案,James已经为它写了一个插件!CrossConnectivity.Current.IsConnected如果您已连接到无线网络,但internet已丢失,它将保持连接状态,并向您显示其已连接。可能需要额外的依赖服务