android - 在 Xamarin Android 中检查互联网是打开还是关闭

标签 android xamarin mvvmcross internet-connection

我正在开发 Xamarin Android 应用程序。在继续我的下一个 fragment 之前,我想检查Internet 连接 并通知用户吗?我该如何实现?以及如何在用户打开互联网后刷新整个 fragment ?
任何意见或建议将不胜感激!

最佳答案

要获取网络状态,您可以在 Activity 中使用以下方法:

 public bool IsOnline()
    {
        var cm = (ConnectivityManager)GetSystemService(ConnectivityService);
        return cm.ActiveNetworkInfo == null ? false : cm.ActiveNetworkInfo.IsConnected;
    }

如果我从这句话中理解正确:以及如何在用户打开互联网后刷新整个 fragment ,您想要检测,无论何时连接状态发生任何变化,因此您绝对需要使用broadcast receivers .

首先,您应该使用名为 ConnectionStatusChanged 的简单事件实现广播接收器,如下所示:

[BroadcastReceiver()]
public class NetworkStatusBroadcastReceiver : BroadcastReceiver
{

    public event EventHandler ConnectionStatusChanged;

    public override void OnReceive(Context context, Intent intent)
    {
        if (ConnectionStatusChanged != null)
            ConnectionStatusChanged(this, EventArgs.Empty);
    }
}

然后在您的 Activity 中(例如,在 OnCreate() 方法中,没关系)创建该接收器的实例并注册它:

var _broadcastReceiver = new NetworkStatusBroadcastReceiver();
_broadcastReceiver.ConnectionStatusChanged += OnNetworkStatusChanged;
Application.Context.RegisterReceiver(_broadcastReceiver, 
new IntentFilter(ConnectivityManager.ConnectivityAction));

这是事件处理程序的主体:

private void OnNetworkStatusChanged(object sender, EventArgs e)
    {
       if(IsOnline()){
        Toast.MakeText(this, "Network Activated", ToastLength.Short).Show();
        // refresh content fragment.
       }
    }

长话短说,NetworkStatusBroadcastReceiver 接收设备网络状态的任何变化并调用 ConnectionStatusChanged(当用户启用数据流量或 WiFi 连接时),然后您捕获该事件并使用 IsOnline() 方法检查网络状态。非常简单。

关于android - 在 Xamarin Android 中检查互联网是打开还是关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33343015/

相关文章:

android - 我可以更改 Android Studio 中的默认布局吗?

Android Bluetooth Low Energy - 自定义服务未获得扫描回调

mvvm - 是否可以使用 Fluent API 在 mvvmcross 中进行方法绑定(bind)?

azure - IMobileServiceTableQuery 未向服务器发送正确的参数

android - 调试 .NET MAUI android 应用程序时断点未命中

android - mvvmcross View 中的背景图像泄漏

mvvmcross - 使用 PCL/MvvmCross 根据 HMAC-SHA512 方法创建哈希值

java - 如何将日期字符串从 JSON 转换为时间跨度

android - 无法在 Android 上使用 Cloud Firestore 保存文档

xamarin - 在 Xamarin.Android 中将 Keycode 转换为 char