2015-02-26 2 views
1

Так что я вызываю несколько разных веб-сервисов в своем приложении, но хочу проверить, не подключено ли устройство к Интернету до вызова службы.Доступность сети Android (автономный режим)?

Сначала я создал статический флаг.

public static bool IsOfflineMode = false;

И перед каждой услугой называется, добавить следующее:

if(IsOfflineMode) { 
    return; 
} 

Это, как я проверяю, если устройство находится в Интернете или нет.

public bool isConnected() 
{ 
    ConnectivityManager connectManager = (ConnectivityManager)GetSystemService (Context.ConnectivityService); 
    NetworkInfo netInfo = connectManager.ActiveNetworkInfo; 

    if (netInfo != null && netInfo.IsConnectedOrConnecting) { 
     NetworkInfo wifi = connectManager.GetNetworkInfo (ConnectivityType.Wifi); 
     NetworkInfo mobile = connectManager.GetNetworkInfo (ConnectivityType.Mobile); 

     if ((mobile != null && mobile.IsConnectedOrConnecting) || (wifi != null && wifi.IsConnectedOrConnecting)) { 
      return true; 
     } else { 
      return false; 
     } 
    } else { 
     return false; 
    } 
} 

А затем присвоить значение isConnected() к IsOfflineMode.

IsOfflineMode = !isConnected();

Но я не хочу называть isConnected() каждый раз.

Как я могу установить триггер, чтобы, когда устройство переходит в автономный режим/онлайн, оно меняет значение IsOfflineMode?

Спасибо за ваше время.

ответ

2

Создать BroadcastReceiver ответ на действия <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>

Надеется, что это помогает!

+0

Это правильно. Читайте далее в документах: http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html –

Смежные вопросы