- Android Detect Internet Connection Status Check Using Broadcast Receivers:-
Broadcast Receivers
Broadcast Receivers following two important steps to make BroadcastReceiver works for the system broadcasted intents:−
- Creating the Broadcast Receiver.
- Registering Broadcast Receiver.
- Now Project Start in Detect Internet Connection Status Checks Using Broadcast Receivers in Android.
- Step (1):- Create a project in Android Studio from File ⇒ New Project.
- Step (2):- Create a class named ConnectivityReceiverInternet.java and extend it from BroadcastReceiver. This is a receiver class that will be notified whenever there is a change in network/internet connection.
package info.thecodehub.checkinternet; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class ConnectivityReceiverInternet extends BroadcastReceiver { public static ConnectivityReceiverListener connectivityReceiverListener; public ConnectivityReceiverInternet() { super(); } @Override public void onReceive(Context context, Intent internet) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting(); if (connectivityReceiverListener != null) { connectivityReceiverListener.onNetworkConnectionChanged(isConnected); } } public static boolean isConnected() { ConnectivityManager cm = (ConnectivityManager) MyApplication.getInstance().getApplicationContext() .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); return activeNetwork != null && activeNetwork.isConnectedOrConnecting(); } public interface ConnectivityReceiverListener { void onNetworkConnectionChanged(boolean isConnected); } }
3.Step (3):- Create another class named MyApplication.java and extend it from Application. This class will be called whenever the app is launched. Here setConnectivityListener() method is used to initiate the connectivity listener.
package info.thecodehub.checkinternet; import android.app.Application; public class MyApplication extends Application { private static MyApplication mInstance; @Override public void onCreate() { super.onCreate(); mInstance = this; } public static synchronized MyApplication getInstance() { return mInstance; } public void setConnectivityListener(ConnectivityReceiverInternet.ConnectivityReceiverListener listener) { ConnectivityReceiverInternet.connectivityReceiverListener = listener; } }
4.Step (4):- Open AndroidManifest.xml In the below changes.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="info.thecodehub.checkinternet"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:name="info.thecodehub.checkinternet.MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name="info.thecodehub.checkinternet.MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="info.thecodehub.checkinternet.ConnectivityReceiverInternet" android:enabled="true"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver> <activity android:name="info.thecodehub.checkinternet.SecondActivity" android:label="@string/title_activity_second" android:parentActivityName="info.thecodehub.checkinternet.MainActivity" android:theme="@style/AppTheme.NoActionBar"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="info.thecodehub.checkinternet.MainActivity" /> </activity> </application> </manifest>
5.Step (5):-Open layout file main activity activity_main.xml add the below layout in xml File.
<?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayout 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:fitsSystemWindows="true" tools:context="info.thecodehub.checkinternet.MainActivity"> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </com.google.android.material.appbar.AppBarLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Turn on/off wifi to notify the app about connection status." /> <Button android:id="@+id/btn_check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Check Connection" /> </LinearLayout> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" android:src="@drawable/ic_add_white_24dp" /> </androidx.coordinatorlayout.widget.CoordinatorLayout>
6.Step(6):- MainActivity.java To the below changes to receive the internet status.
package info.thecodehub.checkinternet; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements ConnectivityReceiverInternet.ConnectivityReceiverListener { private FloatingActionButton fab; private Button btnCheck; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); btnCheck = (Button) findViewById(R.id.btn_check); fab = (FloatingActionButton) findViewById(R.id.fab); // Manually checking internet connection checkConnection(); btnCheck.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Manually checking internet connection checkConnection(); } }); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, SecondActivity.class)); } }); } private void checkConnection() { boolean isConnected = ConnectivityReceiverInternet.isConnected(); showSnack(isConnected); } private void showSnack(boolean isConnected) { String message; int color; if (isConnected) { message = "Good! Connected to Internet"; color = Color.WHITE; } else { message = "Sorry! Not connected to internet"; color = Color.RED; } Snackbar snackbar = Snackbar .make(findViewById(R.id.fab), message, Snackbar.LENGTH_LONG); View sbView = snackbar.getView(); TextView textView = (TextView) sbView.findViewById(R.id.snackbar_text); textView.setTextColor(color); snackbar.show(); } @Override protected void onResume() { super.onResume(); // register connection status listener MyApplication.getInstance().setConnectivityListener(this); } @Override public void onNetworkConnectionChanged(boolean isConnected) { showSnack(isConnected); } }Code Resource:-https://github.com/Keyur88/Internet-Connection-Broadcast-Receiver.git
Now you can run your project.
Output:-
Congratulations!!! you have developed your Detect Internet Connection Status Check Using Broadcast Receivers In Android Example Integration. in Android Studio and now just keep following the rest of the tutorial step by step to become a great Android Developer. All the very best.
What is Broadcast Receivers?
A broadcast receiver is an Android component which allows you to register for system or application events.