Я хочу проверить подключение к Интернету в каждом мероприятии. Если он потерян, сообщение должно отображаться.
Может ли кто-нибудь посоветовать мне, как это сделать?
Я хочу проверить подключение к Интернету в каждом мероприятии. Если он потерян, сообщение должно отображаться.
Может ли кто-нибудь посоветовать мне, как это сделать?
Вы можете использовать ConnectivityManager для проверки состояния сети.
ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if ( conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED 
    || conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED ) {
    // notify user you are online
}
else if ( conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.DISCONNECTED 
    || conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.DISCONNECTED) {
    // notify user you are not online
}
Обратите внимание, что константы ConnectivityManager.TYPE_MOBILE и ConnectivityManager.TYPE_WIFI представляют типы соединений, и эти два значения не являются исчерпывающими. См. здесь для исчерпывающего списка.
Также убедитесь, что у вас есть необходимое разрешение для контроля состояния сети. Вы должны добавить это разрешение в свой AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
		Только одно соединение может быть активным в любой точке. Поэтому более простой ответ:
final ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected()) {
    // notify user you are online
} else {
    // notify user you are not online
} 
Он также подходит для любого нового типа сети, такого как ConnectivityManager # TYPE_WIMAX
Также убедитесь, что у вас есть необходимое разрешение для контроля состояния сети. Вы должны добавить это разрешение в свой AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
		Это можно сделать для различных типов состояния сети.
public void  checkNetworkStatus(){
    final ConnectivityManager connMgr = (ConnectivityManager)
     this.getSystemService(Context.CONNECTIVITY_SERVICE);
     final android.net.NetworkInfo wifi =
     connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
     final android.net.NetworkInfo mobile =
     connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
     if( wifi.isAvailable() ){
     Toast.makeText(this, "Wifi" , Toast.LENGTH_LONG).show();
     }
     else if( mobile.isAvailable() ){
     Toast.makeText(this, "Mobile 3G " , Toast.LENGTH_LONG).show();
     }
     else
     {
         Toast.makeText(this, "No Network " , Toast.LENGTH_LONG).show();
     }
}
		Вы можете напрямую проверить доступность сети и доступность данных для мобильных и wi-fi с помощью
Для доступности сети,
private boolean isNetworkAvailable()
{
 ConnectivityManager conxMgr = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
 NetworkInfo mobileNwInfo = conxMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
 NetworkInfo wifiNwInfo   = conxMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return ((mobileNwInfo== null ? false : mobileNwInfo.isAvailable()) || (wifiNwInfo == null ? false : wifiNwInfo.isAvailable()));
}
Для Доступность данных, если доступна сеть
private boolean isDataAvailable()
{
  ConnectivityManager conxMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
 NetworkInfo mobileNwInfo = conxMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
 NetworkInfo wifiNwInfo   = conxMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return ((mobileNwInfo== null? false : mobileNwInfo.isConnected() )|| (wifiNwInfo == null? false : wifiNwInfo.isConnected()));
}
		Коррекция
if ( conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED 
    ||  conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING  ) {
   //notify user you are online
}
должен быть
if ( conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED 
    ||  conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED ) {
    //notify user you are online
}
		Зарегистрируйте широковещательный приемник на дескриптор CONNECTIVITY_ACTION. См. Этот полный пример. Вы должны обновить статическую переменную 'connectionAvailable', которая будет доступна везде и каждый раз через соответствующий получатель.
Не забудьте объявить широковещательный приемник в файле манифест:
<receiver android:name=".NetworkConnectivityReceiver" android:enabled="true">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
    </intent-filter>
</receiver>
Что касается "проверки каждого действия", возможно, вас заинтересовало бы использование BaseActivity, расширенное вашими действиями, и управление проверкой подключения и отображением сообщения.
Также обратите внимание, что использование событий (не опрос от действий) будет более эффективным.
Вы не используете ConnectivityManager.getNetworkInfo(0).getState() и ConnectivityManager.getNetworkInfo(1).getState() правильно, вместо hardcoding значения (1) и (0) используют ConnectivityManager.TYPE_WIFI и ConnectivityManager.TYPE_MOBILE
Это булевская проверка, чтобы узнать, есть ли у вас доступ к сети. Он не определяет, какой доступ к сети - мобильный, Wi-Fi..., он просто проверяет, не подключен ли он.
boolean mobileNwInfo = false;  
ConnectivityManager conxMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);  
try { mobileNwInfo = conxMgr.getActiveNetworkInfo().isConnected(); }  
catch (NullPointerException e) { mobileNwInfo = false; }  
if ( mobileNwInfo == false ) {
  // Your code goes here...
}