Check Network Status - Android Studio - Java

How to check Network Connection Status

In this tutorial, you will learn how to detect the type of internet connection in an Android app using Java. We will check whether the device has no internet connection, is connected through Wi-Fi, or is using Mobile Data. This is a common feature in modern Android applications to improve user experience and handle offline scenarios smoothly.

By the end of this guide, you’ll understand how to access the Android network services, detect connection status programmatically, and display meaningful messages to users based on their connectivity state.

Code:

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

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

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApplication">

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="20dp"
    tools:context=".MainActivity">

    <!--network status icon-->
    <ImageView
        android:id="@+id/conStatusIv"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:scaleType="fitXY"
        android:src="@drawable/ic_action_no"
        android:tint="?attr/colorPrimary" />

    <!--network status text-->
    <TextView
        android:id="@+id/conStatusTv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginVertical="10dp"
        android:text="No internet connection"
        android:textAlignment="center"
        android:textColor="#000"
        android:textSize="20sp" />

    <!--button to check network status-->
    <com.google.android.material.button.MaterialButton
        android:id="@+id/conStatusBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Check Network" />

</LinearLayout>

MainActivity.java

package com.technifysoft.myapplication;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;


public class MainActivity extends AppCompatActivity {

    //Views
    ImageView mConStatusIv;
    TextView mConStatusTv;
    Button mConStatusBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //link views with xml
        mConStatusIv = findViewById(R.id.conStatusIv);
        mConStatusTv = findViewById(R.id.conStatusTv);
        mConStatusBtn = findViewById(R.id.conStatusBtn);

        //button click to check network status
        mConStatusBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //function call to check network connection status
                checkNetworkConnectionStatus();
            }
        });

    }

    private void checkNetworkConnectionStatus() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        Network network = connectivityManager.getActiveNetwork();
        NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);

        if (capabilities != null) {
            if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
                //wifi connected
                mConStatusIv.setImageResource(R.drawable.ic_action_wifi);
                mConStatusTv.setText("Connected with Wifi");
            } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                //mobile data connected
                mConStatusIv.setImageResource(R.drawable.ic_action_mobile);
                mConStatusTv.setText("Connected with Mobile Data Connection");
            }
        } else {
            //no internet connection
            mConStatusIv.setImageResource(R.drawable.ic_action_no);
            mConStatusTv.setText("No internet connection");
        }

    }
}

Screenshots:

Check Network Status - Android Studio - Java


Comments

Popular posts from this blog

Picture In Picture - Android Studio - Kotlin

Manage External Storage Permission - Android Studio - Kotlin

SeekBar with Customization | Android Studio | Java