2015-10-26 16 views
7

私はXamarin Androidアプリケーションに取り組んでいます。私の次の断片に進む前に、インターネット接続をチェックして、どのように私はそれを実装することができますか?また、ユーザーがインターネットにスイッチを入れた後でフラグメント全体をリフレッシュする方法は?
アドバイスやご提案をいただければ幸いです!あなたがしたい、And how to refresh whole fragment after user switch-on the internet:私はこの文から正しくあなたを理解している場合Xamarin Androidでインターネットがオンまたはオフになっていることを確認してください

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

:あなたがあなたの活動の次のメソッドを使用することができ、ネットワークの状態を取得するには

NetworkStatus internetStatus = Reachability.InternetConnectionStatus(); 

if(!Reachability.IsHostReachable("http://google.com")) { 
    // Put alternative content/message here 
} 
else 
{ 
    // Put Internet Required Code here 
} 
+0

検索を公開ウィル。 [this](https://developer.xamarin.com/recipes/ios/network/reachability/detect_if_network_is_available/)を参照してください –

答えて

1

ことは、これを試してみてください接続状況の変化が起こるたびに、それを検出します。したがって、絶対に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); 
    } 
} 

を(例えば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()メソッドを使用してネットワークステータスを確認します。非常に簡単です。

+0

到達可能性クラスdllを解決できませんか? –

8

1

あなたはMVVMCrossプラグインを使用することができます。Connectivity

それは前に尋ねるブール

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

と変化状態にデリゲート

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

xamarinの初心者の方のためのチュートリアルはありません。 –

関連する問題