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

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

Solutions Collecting From Web of "检查Xamarin Android中的互联网是否打开或closures"

尝试这个 :

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;