Broadcast Receiver and Internet connection

前端 未结 2 1376
忘掉有多难
忘掉有多难 2020-12-18 14:04

How do I use broadcast receiver to check if there isn\'t Internet connection?

And after that:

1.If there is connection = do nothing

2.There isn\'t co

相关标签:
2条回答
  • 2020-12-18 14:46

    Create a file to your project as ... and copy paste following code into this file

    package your.package.name; //Change it as your package name
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.widget.Toast;
    
    public class NetworkChangeReceiver extends BroadcastReceiver {
    
        public static int TYPE_WIFI = 1;
        public static int TYPE_MOBILE = 2;
        public static int TYPE_NOT_CONNECTED = 0;
    
        @Override
        public void onReceive(final Context context, final Intent intent) {
    
            String status = getConnectivityStatusString(context);
    
            Toast.makeText(context, status, Toast.LENGTH_LONG).show();
        }
    
        public static int getConnectivityStatus(Context context) {
            ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
    
            NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
            if (null != activeNetwork) {
                if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
                    return TYPE_WIFI;
    
                if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
                    return TYPE_MOBILE;
            } 
            return TYPE_NOT_CONNECTED;
        }
    
        public static String getConnectivityStatusString(Context context) {
            int conn = getConnectivityStatus(context);
            String status = null;
            if (conn == TYPE_WIFI) {
            status = "Wifi enabled";
            } else if (conn == TYPE_MOBILE) {
                status = "Mobile data enabled";
            } else if (conn == TYPE_NOT_CONNECTED) {
                status = "Not connected to Internet";
            }
            return status;
        }
    }
    

    And add following to Manifest file in application tag

    <application  ...>
     ...
        <receiver
            android:name="your.package.name.NetworkChangeReceiver" //Change it as your-package-name.NetworkChangeReceiver
            android:label="NetworkChangeReceiver" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
                <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
            </intent-filter>
        </receiver>
      ...
    </application>
    

    After running your application you will see Toast Message if network state change.

    0 讨论(0)
  • 2020-12-18 15:03

    ConnectivityManager provides calls by which you can check for internet connectivity.

    If you want to listen for a change in connectivity, create a listener that reacts to ConnectivityManager.CONNECTIVITY_ACTION

    0 讨论(0)
提交回复
热议问题