Tuesday, January 31, 2017

BroadcastReceiver receives multiple identical messages for one event – Android

Receiving multiple broadcast is a device specific problem. Some phones just send one broadcast while other send 2 or 3. But there is a work around:

Assuming you get the disconnect message when the wifi is disconnected, I would guess the first one is the correct one and the other 2 are just echoes for some reason.

To know that the message has been called, you could have a static boolean that gets toggled between connect and disconnect and only call your sub-routines when you receive a connection and the boolean is true. Something like:
 public class ConnectionChangeReceiver extends BroadcastReceiver {  
   private static boolean firstConnect = true;  
   @Override  
   public void onReceive(Context context, Intent intent) {  
     final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  
     final NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();  
     if (activeNetInfo != null) {  
       if(firstConnect) {   
         // do subroutines here  
         firstConnect = false;  
       }  
     }  
     else {  
       firstConnect= true;  
     }  
   }  
 }  

No comments :

Post a Comment