Dark Mode
Image

Android Fragments

Android Service

Android AlarmManager

Camera Tutorial

Sensor Tutorial

Android Graphics

Android Animation

Android Web Service

Android MCQ

Android Quiz

Network Connectivity Services

Android network connectivity services allow us to check the network connectivity information of the device. It is very important to check the internet connection of the device while performing the task which is based on internet service such as fetching data from the server (internet) or writing data to the server.

Using Android Network Connectivity Services we can also determine the types of a network of android device. It may be of types TYPE_WIFI (wifi), TYPE_MOBILE (mobile), TYPE_BLUETOOTH (Bluetooth), etc.

Android Network Connectivity Service Example

Let's create a simple example to check the network connectivity of the device as well as its type.

To access the network connectivity of a device, we need to provide the network access permission in AndroidMenifest.xml file.

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

In the activity_main.xml file of layout add the following code. For accessing the network state of a device, there is no requirement of the layout file. Here, we are using the activity_main.xml file only for storing the state of network type.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>  
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:app="http://schemas.android.com/apk/res-auto"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    tools:context="example.javatpoint.com.networkconnectivityservice.MainActivity">  
  
    <TextView  
        android:id="@+id/textView"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:textSize="16dp"  
        android:layout_marginBottom="8dp"  
        android:layout_marginEnd="8dp"  
        android:layout_marginStart="8dp"  
        android:layout_marginTop="8dp"  
        android:contentDescription="networkstate"  
        android:text="Network state ?"  
        app:layout_constraintBottom_toBottomOf="parent"  
        app:layout_constraintEnd_toEndOf="parent"  
        app:layout_constraintRight_toRightOf="parent"  
        app:layout_constraintStart_toStartOf="parent"  
        app:layout_constraintTop_toTopOf="parent"  
        app:layout_constraintVertical_bias="0.183" />  
  
    <Button  
        android:id="@+id/button"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_marginEnd="8dp"  
        android:layout_marginStart="8dp"  
        android:text="Check Connection Type"  
        android:layout_marginTop="392dp"  
        app:layout_constraintEnd_toEndOf="parent"  
        app:layout_constraintStart_toStartOf="parent"  
        app:layout_constraintTop_toTopOf="parent" />  
  
</android.support.constraint.ConstraintLayout> 

Create a java class named as NetworkState.java. This class contains a getConnectivityStatus() method which returns the constant integer value on the basis of current network connection.

The code context.getSystemService(Context.CONNECTIVITY_SERVICE) is used to return the instance of the ConnectivityManager class which access the network properties.

NetworkState.java

package example.javatpoint.com.networkconnectivityservice;  
  
  
import android.content.Context;  
import android.net.ConnectivityManager;  
import android.net.NetworkInfo;  
  
public class NetworkState {  
    public static int TYPE_NOT_CONNECTED = 0;  
    public static int TYPE_WIFI = 1;  
    public static int TYPE_MOBILE = 2;  
  
    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 = NetworkState.getConnectivityStatus(context);  
        String status = null;  
        if (conn == NetworkState.TYPE_WIFI) {  
            status = "Wifi enabled";  
        } else if (conn == NetworkState.TYPE_MOBILE) {  
            status = "Mobile data enabled";  
        } else if (conn == NetworkState.TYPE_NOT_CONNECTED) {  
            status = "Not connected to Internet";  
        }  
        return status;  
    }  
}  

Create a receiver class named as NetworkReceiver.java and extends the BroadcastReciever class. This class handles the changes occur in the network state of a device. The onReceive() method of BroadcastReciever class called when the network state of device changes.

NetworkReceiver.java

package example.javatpoint.com.networkconnectivityservice;  
import android.content.BroadcastReceiver;  
import android.content.Context;  
import android.content.Intent;  
import android.widget.Toast;  
  
  
public class NetworkReceiver extends BroadcastReceiver {  
    static String  status =null;  
    @Override  
    public void onReceive(Context context, Intent intent) {  
        status = NetworkState.getConnectivityStatusString(context);  
        Toast.makeText(context, status, Toast.LENGTH_LONG).show();  
        if(status == "Wifi enabled"){  
            //your code when wifi enable  
        }  
        else if(status=="Mobile data enabled"){  
            //your code when TYPE_MOBILE network enable  
        }  
        else if(status=="Not connected to Internet"){  
            //your code when no network connected  
        }  
    }  
}  

In the MainActivity.java class, we are displaying the network state of a device in TextView by clicking the Button.

MainActivity.java

package example.javatpoint.com.networkconnectivityservice;  
  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.view.View;  
import android.widget.Button;  
import android.widget.TextView;  
import android.widget.Toast;  
  
public class MainActivity extends AppCompatActivity {  
  
    Button button;  
    TextView textView;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        button = findViewById(R.id.button);  
        textView = findViewById(R.id.textView);  
        button.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                NetworkReceiver receiver = new NetworkReceiver() ;  
                String networkStatus = receiver.status;  
                textView.setText("connection type: "+networkStatus);  
                Toast.makeText(getApplicationContext(), networkStatus, Toast.LENGTH_LONG).show();  
            }  
        });  
    }  
}  

In the AndroidMenifest.xml file, add the network access permission and receiver class that handles the changes occur in BroadcastReceiver class.

AndroidMenifest.xml

<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    package="example.javatpoint.com.networkconnectivityservice">  
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
    <uses-permission android:name="android.permission.INTERNET"/>  
    <application  
        android:allowBackup="true"  
        android:icon="@mipmap/ic_launcher"  
        android:label="@string/app_name"  
        android:roundIcon="@mipmap/ic_launcher_round"  
        android:supportsRtl="true"  
        android:theme="@style/AppTheme">  
        <activity android:name=".MainActivity">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
        <receiver  
            android:name=".NetworkReceiver"  
            android:enabled="true">  
            <intent-filter>  
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />  
                <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />  
            </intent-filter>  
        </receiver>  
    </application>  
  
</manifest>  

Output

Android Network Connectivity Services Android Network Connectivity Services

Comment / Reply From