Search code examples
androidbroadcastreceiver

Notify when network lost


How can i tell when the network status has changed on a device?

What permissions would i need?


Solution

  • You should make an BroadcastReceiver that will be triggered when the connectivity status has changed

       public class InternetConnectionChangeReceiver extends BroadcastReceiver 
       {
                public void onReceive(Context context, Intent intent) {
                    boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
                    String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
                    boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);
    
                    NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
                    NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
    
                    if(currentNetworkInfo.isConnected()){
                        Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
                    }else{
                        Toast.makeText(getApplicationContext(), "Not Connected", Toast.LENGTH_LONG).show();
                    }
                }
            }
    

    add below permission in your manifest file.

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

    Register your broadcast receiver in manifest file.

    <receiver android:name="InternetConnectionChangeReceiver">
                <intent-filter>
                    <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
                </intent-filter>
            </receiver>