C#:如何检查 PCL 项目中的互联网访问

C#: How to check internet access in PCL project

我正在尝试检查由 Xamarin.iOS 和 Xamarin.Android 项目使用的 PCL 项目中的互联网连接。我从我的研究中收集到 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 的 Connectivity 插件:

https://github.com/jamesmontemagno/ConnectivityPlugin

你安装这个,然后调用:

CrossConnectivity.Current.IsConnected

来自您的 PCL。您甚至可以订阅事件以查看连接何时更改:

CrossConnectivity.Current.ConnectivityChanged += <handler>

这适用于 iOS 和 Android。