Check Network Status - Android Studio - Kotlin

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.kt

package com.technifysoft.myapplication

import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.os.Bundle
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity


class MainActivityKt : AppCompatActivity() {

    //Views
    private lateinit var mConStatusIv: ImageView
    private lateinit var mConStatusTv: TextView
    private lateinit var mConStatusBtn: Button

    override fun onCreate(savedInstanceState: Bundle?) {
        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 {
            //function call to check network connection status
            checkNetworkConnectionStatus()
        }

    }


    private fun checkNetworkConnectionStatus() {
        val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val network = connectivityManager.activeNetwork
        val capabilities = connectivityManager.getNetworkCapabilities(network)

        if (capabilities != null) {
            when {
                capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> {
                    //wifi connected
                    mConStatusIv.setImageResource(R.drawable.ic_action_wifi)
                    mConStatusTv.text = "Connected with Wifi"
                }

                capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> {
                    //mobile data connected
                    mConStatusIv.setImageResource(R.drawable.ic_action_mobile)
                    mConStatusTv.text = "Connected with Mobile Data Connection"
                }
            }
        } else {
            //no internet connection
            mConStatusIv.setImageResource(R.drawable.ic_action_no)
            mConStatusTv.text = "No internet connection"
        }
    }

}

Screenshots:

Check Network Status - Android Studio - Kotlin


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