检查Xamarin Android中的互联网是否打开或closures

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

  • 回收位图不释放内存
  • 无法安装Xamarin.Android.Support.v4
  • 如何在旋转设备(纵向/横向)后在MapFragment上保留/重新绑定事件监听器?
  • 循环ProgressBar背景:Android Xamarin
  • Xamarin Forms - 媒体插件 - 手机上的空缩略图
  • 如何在Xamarin.Forms中获取/检测屏幕大小?
  • Xamarin Android安装失败
  • Xamarin共享项目与便携式类库
  • 尝试这个 :

    NetworkStatus internetStatus = Reachability.InternetConnectionStatus(); if(!Reachability.IsHostReachable("http://google.com")) { // Put alternative content/message here } else { // Put Internet Required Code here } 

    要获得networking状态,您可以在您的活动中使用以下方法:

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

    如果我从这句话中正确理解了你的话: And how to refresh whole fragment after user switch-on the internet ,你想要检测到,只要连接状态发生任何变化,你绝对需要使用广播接收器 。

    首先,您应该使用一个名为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); } } 

    然后在你的活动(例如OnCreate()方法,没关系)创build一个接收器的实例并注册它:

     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会收到设备networking状态的任何变化,并调用ConnectionStatusChanged (当用户启用数据stream量或WiFi连接时),然后使用IsOnline()方法捕获该事件并检查networking状态。 很简单。

    您可以使用MVVMCross插件: 连接

    它会暴露一个布尔值

     /// <summary> /// Gets if there is an active internet connection /// </summary> bool IsConnected { get; } 

    和一个改变状态的代表

     /// <summary> /// Event handler when connection changes /// </summary> event ConnectivityChangedEventHandler ConnectivityChanged;