• 1

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 called only when the network is available. If it is unavailable, I don't want notified.

This is the broadcast receiver

public class NetworkChangeReceiver extends BroadcastReceiver {

    public void onReceive(final Context context, final Intent intent) {
        final ConnectivityManager connMgr = (ConnectivityManager) context

        final wifi = connMgr

        final mobile = connMgr

        if (wifi.isAvailable() || mobile.isAvailable()) {
            // Do something

            Log.d("Network Available ", "Flag No 1");

This is the manifest.xml

<manifest xmlns:android=""
    android:versionName="1.0" >

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

        android:theme="@style/AppTheme" >
        <receiver android:name=".NetworkChangeReceiver" >
                <action android:name="" />
                <action android:name="" />


Answer to your first question: Your broadcast receiver is being called two times because

You have added two <intent-filter>

  1. Change in network connection :
    <action android:name="" />

  2. Change in WiFi state:
    <action android:name="" />

Just use one:
<action android:name="" />.

It will respond to only one action instead of two. See here for more information.

Answer to your second question (you want receiver to call only one time if internet connection available):

Your code is perfect; you notify only when internet is available.


You can use this method to check your connectivity if you want just to check whether mobile is connected with the internet or not.

public boolean isOnline(Context context) {

    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    //should check null because in airplane mode it will be null
    return (netInfo != null && netInfo.isConnected());
  • 0
Reply Report


Related Questions

Trending Tags