2013-03-30 5 views
2

Я делаю это немного поздно в этом процессе. У меня довольно много экранов/мероприятий, для которых все требуется подключение к Интернету, не имеет значения, работает ли его Wi-Fi или сеть. Я могу определить соединение, но мне нужно выполнить эту проверку для каждого отдельного действия или есть глобальный способ сделать это для моего приложения?Проверка подключения к Интернету в каждом мероприятии?

Просто подумал, что я попрошу, прежде чем добавлять много кода.

ответ

2
public class CheckNetwork { 


private static final String TAG = CheckNetwork.class.getSimpleName(); 



public static boolean isInternetAvailable(Context context) 
{ 
    NetworkInfo info = (NetworkInfo) ((ConnectivityManager) 
    context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); 

    if (info == null) 
    { 
     Log.d(TAG,"no internet connection"); 
     return false; 
    } 
    else 
    { 
     if(info.isConnected()) 
     { 
      Log.d(TAG," internet connection available..."); 
      return true; 
     } 
     else 
     { 
      Log.d(TAG," internet connection"); 
      return true; 
     } 

    } 
} 
} 

Чтобы проверить Netowrk

В вашей деятельности

if(CheckNetwork.isInternetAvailable(MainActivtiy.this)) //if connection available 
    { 

    } 

Everytime вы хотите проверить интернет передать контекст деятельности возвращает истину, если таковые имеются еще ложь.

Detect whether there is an Internet connection available on Android.

How to check internet access on Android? InetAddress never times out.

7

Вы можете подкласса Activity с чем-то вроде InternetActivity, а также в onResume, который вы можете проверить на наличие соединения. Затем все действия, требующие Интернета в вашем приложении, должны быть подклассами InternetActivity и будут автоматически выполнять проверку либо путем вызова super.onResume(), либо вообще не переопределять onResume.

-1

Как Tushar ответил above, унаследовав от чего-то, как InternetActivity это хорошо, но вы не должны проверить его в onResume, если вы не используете какой-то сервис, который постоянно требует подключения к интернету. Вместо этого проверьте это, когда событие, подобное нажатию кнопки, произойдет, чтобы перейти к следующему действию; поэтому без запуска другого действия вы можете отображать тост, чтобы проверить подключение к Интернету. Вы должны сделать это для любого события, которое требует интернет, потому что для всей деятельности редко требуется постоянное подключение к Интернету.

Вы можете добавить этот метод в том, что супер-класса:

private boolean isInternetConnected() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    return cm.getActiveNetworkInfo() != null 
      && cm.getActiveNetworkInfo().isConnectedOrConnecting(); 

} 

Тогда:

if(isInternetConnected()) 
    //to the internet thing 
else 
    //display toast 
0

Существует еще одно интересное решение, которое вы можете думать, Используя BroadcastReceiver. Поэтому сейчас вы планируете проверять много раз. Вместо этого вы будете проверять, только если сетевое подключение изменится, и сообщите об этом сетевому модулю.

IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);   
registerReceiver(YOUR_RECEIVER, filter); 
+0

Не совсем ответ – FARID

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