2015-10-26 12 views
7

Tôi đang làm việc trên Ứng dụng Android Xamarin. Trước khi tiếp tục phân đoạn tiếp theo, tôi muốn kiểm tra Kết nối Internet và thông báo cho người dùng về nó? Làm thế nào tôi có thể thực hiện điều đó? Và làm thế nào để làm mới toàn bộ đoạn sau khi người dùng chuyển đổi trên internet?
Bất kỳ lời khuyên hay gợi ý nào sẽ được đánh giá cao!Kiểm tra xem Internet có bật hay tắt trong Xamarin Android

+0

tìm kiếm trước khi hỏi. xem [this] (https://developer.xamarin.com/recipes/ios/network/reachability/detect_if_network_is_available/) –

Trả lời

1

Hãy thử điều này:

NetworkStatus internetStatus = Reachability.InternetConnectionStatus(); 

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

không thể giải quyết dll Lớp Khả năng hiển thị? –

8

Để có được tình trạng mạng mà bạn có thể sử dụng các phương pháp sau đây trong hoạt động của bạn:

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

Nếu tôi hiểu bạn một cách chính xác từ câu này: And how to refresh whole fragment after user switch-on the internet, Bạn muốn phát hiện, bất cứ khi nào có bất kỳ thay đổi nào trong trạng thái kết nối xảy ra, Do đó bạn hoàn toàn cần sử dụng broadcast receivers.

Trước hết bạn nên thực hiện một máy thu phát sóng với một sự kiện đơn giản đặt tên ConnectionStatusChanged như sau:

[BroadcastReceiver()] 
public class NetworkStatusBroadcastReceiver : BroadcastReceiver 
{ 

    public event EventHandler ConnectionStatusChanged; 

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

Sau đó, trong hoạt động của bạn (trong OnCreate() phương pháp ví dụ, Nó không quan trọng) tạo ra một thể hiện của nhận điều đó và đăng ký nó:

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

đây là cơ thể của xử lý sự kiện:

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

Để cắt những câu chuyện dài ngắn, NetworkStatusBroadcastReceiver nhận bất kỳ sự thay đổi trong tình trạng mạng của thiết bị và gọi ConnectionStatusChanged (Khi sử dụng cho phép lưu lượng dữ liệu hoặc kết nối WiFi), Sau đó, bạn bắt sự kiện đó và kiểm tra tình trạng mạng sử dụng IsOnline() phương pháp. Rất đơn giản.

1

Bạn có thể sử dụng plugin MVVMCross: Connectivity

Nó wil lộ một boolean

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

và một đại biểu về tình trạng thay đổi

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

không có hướng dẫn về cách thử nó cho một người mới bắt đầu ở xamarin. –

Các vấn đề liên quan