Created
April 16, 2015 19:27
-
-
Save eefret/7d28a7d0bef3af79f034 to your computer and use it in GitHub Desktop.
A Simple but powerfull Network State Receiver for android implementing listeners
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class NetworkStateReceiver extends BroadcastReceiver { | |
protected List<NetworkStateReceiverListener> listeners; | |
protected Boolean connected; | |
public NetworkStateReceiver() { | |
listeners = new ArrayList<NetworkStateReceiverListener>(); | |
connected = null; | |
} | |
public void onReceive(Context context, Intent intent) { | |
if(intent == null || intent.getExtras() == null) | |
return; | |
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); | |
NetworkInfo ni = manager.getActiveNetworkInfo(); | |
if(ni != null && ni.getState() == NetworkInfo.State.CONNECTED) { | |
connected = true; | |
} else if(intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) { | |
connected = false; | |
} | |
notifyStateToAll(); | |
} | |
private void notifyStateToAll() { | |
for(NetworkStateReceiverListener listener : listeners) | |
notifyState(listener); | |
} | |
private void notifyState(NetworkStateReceiverListener listener) { | |
if(connected == null || listener == null) | |
return; | |
if(connected == true) | |
listener.networkAvailable(); | |
else | |
listener.networkUnavailable(); | |
} | |
public void addListener(NetworkStateReceiverListener l) { | |
listeners.add(l); | |
notifyState(l); | |
} | |
public void removeListener(NetworkStateReceiverListener l) { | |
listeners.remove(l); | |
} | |
public interface NetworkStateReceiverListener { | |
public void networkAvailable(); | |
public void networkUnavailable(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
How can I call this class to check on every activity the network state?