Broadcast receiver for checking internet connection in android app

后端 未结 21 3472
温柔的废话
温柔的废话 2020-11-21 22:28

I am developing an android broadcast receiver for checking internet connection.

The problem is that my broadcast receiver is being called two times. I want it to get

21条回答
  •  攒了一身酷
    2020-11-21 22:40

    1) In manifest : - call receiver like below code

    
    
    
        
        
    
        
            
                
                    
                
            
            
                
                    
    
                    
                
            
        
    
    
    

    2) Make one Broad Cast Receiver Class: - In This class add code of Network Check

    package com.safal.checkinternet;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.util.Log;
    import android.widget.Toast;
    
    public class NetworkChangeReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(final Context context, final Intent intent) {
            if (isOnline(context)){
                Toast.makeText(context, "Available", Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(context, "Not Available", Toast.LENGTH_SHORT).show();
            }
        }
        public boolean isOnline(Context context) {
    
            ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            assert cm != null;
            NetworkInfo netInfo = cm.getActiveNetworkInfo();
            return (netInfo != null && netInfo.isConnected());
        }    
    } 
    

    3) In your Activity call to Broad Cast Receiver : -

    package com.safal.checkinternet;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.Bundle;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    //Call Broad cast Receiver 
            IntentFilter filter = new IntentFilter();
            filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
            registerReceiver(new NetworkChangeReceiver(), filter);
        }
    }
    

提交回复
热议问题