2012-01-25 3 views
1

есть ли способ использования ContentProvider, чтобы проверить, подключен ли мой Android-телефон к Интернету?Android ContentProvider проверяет доступ к сети

Благодаря

+1

Как это возможно с помощью ContentProvider? Это возможно с помощью ConnectivityManager & NetworkInfo. –

ответ

1
// check internet connectivity 
public static boolean isNetworkAvailable(Context context) { 

    boolean networkStatus; 
    try { 
     ConnectivityManager connectivityManager = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetworkInfo = connectivityManager 
      .getActiveNetworkInfo(); 

     networkStatus = (activeNetworkInfo != null && activeNetworkInfo.isConnected()) ? true : false; 

    } catch (Exception e) { 
     e.printStackTrace(); 
     DinotaLogger.log(e, Level.SEVERE); 
     networkStatus = false; 
    } 

    return networkStatus; 
} 

Пожалуйста, не забудьте положить в файл манифеста. Если вы используете эмулятор для проверки этого, нажмите F8, чтобы отключить доступ к сети. Это отлично работает с эмулятором Android 2.3.3.

2

Я думаю, что вы хотите ConnectivityManager. Вот пример here.

Это объясняет, как регистрироваться для уведомлений. Чтобы проверить непосредственно, вы можете получить экземпляр ConnectivityManager:

ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo info = mgr.getActiveNetworkInfo(); 
boolean is_connected = info.isConnected(); 
boolean is_available = info.isAvailable(); 
+0

Это, вероятно, мой предпочтительный способ проверить подключение к сети. Вы можете проводить опрос для сетевого подключения перед каждым вызовом веб-службы, а метод NetworkInfo.isConnectingOrConnected() может быть весьма полезен. –

1

этот код должен помочь вам запрос, если сеть передачи данных доступна или нет:

public static boolean isDataNetworkAvailable(Context context){ 
     try{ 
      ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
      return activeNetworkInfo != null; 
     } 
     catch (Exception e) { return false; } 
    } 
1

Он расскажет вам в логическом состоянии, что ваш Android подключен к Интернету.

Я использовал это:

public boolean isNetworkAvailable() { 
      try{ 
       Context context = getApplicationContext(); 
       ConnectivityManager connectivity = (ConnectivityManager) 
       context.getSystemService(Context.CONNECTIVITY_SERVICE); 
       if (connectivity == null) { 

       }else{ 
        NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
        if (info != null) { 
         for (int i = 0; i < info.length; i++) { 
          if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
           return true; 
          } 
         } 
        } 
       } 
      }catch (Exception e) { 
       System.out.println("error"); 
      } 
      return false; 
     } 

Также поставил:

<uses-permission> android:name="android.permission.ACCESS_NETWORK_STATE" /> 

эта линия для андроид манифеста.

Я использовал это в своей заявке.