How to Check Internet Connection in Android with No Internet Connection Dialog?

18 Jul, 2021
Hello geeks, today we are going to learn that how we can add the functionality of Internet Alert to our application. You have definitely seen in almost all applications that when data is turned off or application is not able to get Internet then it pops up a message of “No Internet Connection” and then again it is connected to data is displays message as “Back Online’ or “Internet in connected”, we are going to implement the same in our application. 
Goals/purposes of Internet Alert:
To inform the user that he/she is not connected to the network.
To stop all internet-related activities or services in the application.
Here, we will be creating a button. Whenever the user will press the button message of Internet Connectivity will be displayed. Note that we are going to implement this application using Java language. A sample video is given below to get an idea about what we are going to do in this article.
Step 1: Creating a new project
Open a new project.
We will be working on Empty Activity with language as Java. Leave all other options unchanged.
You can change the name of the project at your convenience.
There will be two default files named activity_main.xml and MainActivity.java.
If you don’t know how to create a new project in Android Studio then you can refer to How to Create/Start a New Project in Android Studio? 
Step 2: Navigate to app > manifests > AndroidManifest.xml file and paste the following piece of code to add internet permission
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
Step 3: Working with activity_main.xml file
We are using a button in the activity_main.xml file to perform the action. Use the following code in the activity_main.xml file.
XML
<?xml version="1.0" encoding="utf-8"?>  <!-- Relative layout as parent layout--><RelativeLayout     xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity">      <!-- Button to perform the action of Internet alert-->    <Button        android:id="@+id/btn_check"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:text="Check Internet Connection" />  </RelativeLayout>
After implementing the above code, the design of the activity_main.xml file will look like this.
Step 4: Working with java files
Create a new java class named as ConnectionReceiver using the following method   
Use the below code in the ConnectionReceiver.java file.
Java
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;  public class ConnectionReceiver extends BroadcastReceiver {      // initialize listener    public static ReceiverListener Listener;      @Override    public void onReceive(Context context, Intent intent) {          // initialize connectivity manager        ConnectivityManager connectivityManager = (ConnectivityManager)                context.getSystemService(Context.CONNECTIVITY_SERVICE);                  // Initialize network info        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();                  // check condition        if (Listener != null) {                          // when connectivity receiver            // listener  not null            // get connection status            boolean isConnected = networkInfo != null && networkInfo.isConnectedOrConnecting();                          // call listener method            Listener.onNetworkChange(isConnected);        }    }      public interface ReceiverListener {        // create method        void onNetworkChange(boolean isConnected);    }}
Go to the MainActivity.java file and refer to the following code. Below is the code for the MainActivity.java file. Comments are added inside the code to understand the code in more detail.
Java
import android.content.Context;import android.content.IntentFilter;import android.graphics.Color;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;  import androidx.appcompat.app.AppCompatActivity;  import com.google.android.material.snackbar.Snackbar;  public class MainActivity extends AppCompatActivity implements ConnectionReceiver.ReceiverListener {      Button btn_check;      @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);          // assign variable        btn_check = findViewById(R.id.btn_check);          // create method        checkConnection();        btn_check.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                // call method                checkConnection();            }        });    }      private void checkConnection() {          // initialize intent filter        IntentFilter intentFilter = new IntentFilter();          // add action        intentFilter.addAction("android.new.conn.CONNECTIVITY_CHANGE");          // register receiver        registerReceiver(new ConnectionReceiver(), intentFilter);          // Initialize listener        ConnectionReceiver.Listener = this;          // Initialize connectivity manager        ConnectivityManager manager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);          // Initialize network info        NetworkInfo networkInfo = manager.getActiveNetworkInfo();          // get connection status        boolean isConnected = networkInfo != null && networkInfo.isConnectedOrConnecting();          // display snack bar        showSnackBar(isConnected);    }      private void showSnackBar(boolean isConnected) {          // initialize color and message        String message;        int color;          // check condition        if (isConnected) {                          // when internet is connected            // set message            message = "Connected to Internet";                          // set text color            color = Color.WHITE;          } else {                          // when internet             // is disconnected            // set message            message = "Not Connected to Internet";                          // set text color            color = Color.RED;        }          // initialize snack bar        Snackbar snackbar = Snackbar.make(findViewById(R.id.btn_check), message, Snackbar.LENGTH_LONG);                  // initialize view        View view = snackbar.getView();                  // Assign variable        TextView textView = view.findViewById(R.id.snackbar_text);                  // set text color        textView.setTextColor(color);                  // show snack bar        snackbar.show();    }      @Override    public void onNetworkChange(boolean isConnected) {        // display snack bar        showSnackBar(isConnected);    }      @Override    protected void onResume() {        super.onResume();        // call method        checkConnection();    }      @Override    protected void onPause() {        super.onPause();        // call method        checkConnection();    }}
Congratulations! we have successfully made the application to check Internet Connection and alert it to the user. Here is the final output of our application.
Output:
Android
Java
Java
Android
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to Add Views Dynamically and Store Data in Arraylist in Android?
Android SDK and it's Components
Flutter - Custom Bottom Navigation Bar
How to Communicate Between Fragments in Android?
Retrofit with Kotlin Coroutine in Android
Arrays.sort() in Java with examples
For-each loop in Java
Arrays in Java
Multidimensional Arrays in Java
Split() String method in Java with examples