2015-10-26 14 views
7

में इंटरनेट चालू है या नहीं, मैं ज़ैमरिन एंड्रॉइड एप्लिकेशन पर काम कर रहा हूं। मेरे अगले खंड में आगे बढ़ने से पहले मैं इंटरनेट कनेक्शन और उपयोगकर्ता को इसके बारे में सूचित करना चाहता हूं? मैं इसे कैसे कार्यान्वित कर सकता हूं? और इंटरनेट स्विच पर इंटरनेट स्विच के बाद पूरे खंड को रीफ्रेश कैसे करें?
कोई सलाह या सुझाव की सराहना की जाएगी!जांचें कि एक्समरिन एंड्रॉइड

+0

खोज से पहले पूछना। [यह] देखें (https://developer.xamarin.com/recipes/ios/network/reachability/detect_if_network_is_available/) –

उत्तर

1

इस प्रयास करें:

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

रीचैबिलिटी क्लास डीएलएल को हल करने में असमर्थ? –

8

आप अपनी गतिविधि में निम्न विधि का उपयोग कर सकता है नेटवर्क स्थिति प्राप्त करने के लिए And how to refresh whole fragment after user switch-on the internet, आप करना चाहते हैं पता लगाएं, कनेक्शन स्थिति में जब भी कोई भी परिवर्तन होता है, इसलिए आपको broadcast receivers का उपयोग करने की आवश्यकता है।

[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() विधि में, इससे कोई फर्क नहीं करता है) का एक उदाहरण बनाने के लिए:

सबसे पहले आप इस प्रकार ConnectionStatusChanged नाम के एक सरल घटना के साथ एक प्रसारण रिसीवर को लागू करना चाहिए कि रिसीवर और इसे पंजीकृत:

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

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

यहाँ ईवेंट हैंडलर का मुख्य भाग है

लंबी कहानी को कम करने के लिए, NetworkStatusBroadcastReceiver डिवाइस की नेटवर्क स्थिति में कोई परिवर्तन प्राप्त करता है और ConnectionStatusChanged (जब उपयोगकर्ता डेटा यातायात या वाईफाई कनेक्शन सक्षम करता है) को आमंत्रित करता है, तो आप उस घटना को पकड़ते हैं और IsOnline() विधि का उपयोग करके नेटवर्क स्थिति की जांच करते हैं। बहुत आसान।

1

आप MVVMCross प्लगइन का उपयोग कर सकते हैं: Connectivity

यह बेनकाब wil एक बूलियन

/// <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 में शुरुआत करने वाले किसी व्यक्ति के लिए इसे आजमाने का तरीका नहीं है। –

संबंधित मुद्दे