
When using application suddenly if the network is OFF or ON we can detect using the broadcast receiver.
Please refer below code for that
step1: Create one class that extends as an application like below
TestApp.Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
package com.androindian.raj.test; import android.app.Application; import android.content.IntentFilter; import android.net.ConnectivityManager; public class TestApp extends Application{ NetworkConnectivity listner; private static TestApp mInstance; IntentFilter filter; private boolean isregistered; @Override public void onCreate() { super.onCreate(); mInstance=this; filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); listner=new NetworkConnectivity(); } public void setConnectivityListener(NetworkConnectivity.ConnectivityReceiverListener listener) { NetworkConnectivity.connectivityReceiverListener = listener; registerReceiver(listner,filter); isregistered=true; } public void resetConnectivityListener(NetworkConnectivity.ConnectivityReceiverListener listener){ if (isregistered) { isregistered=false; NetworkConnectivity.connectivityReceiverListener = null; unregisterReceiver(listner); } } public static TestApp getInstance() { return mInstance; } } |
Step2:
Add that class name in the manifest file within Application tag like below
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.androindian.raj.test"> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" <strong><span style="color: #ff6600;"> android:name="TestApp"</span></strong> 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> </application> </manifest> |
Step3:
Create one more class on name of NetworkConnectvity.Java that extends as a broadcast receiver
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
package com.androindian.raj.test; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkInfo; class NetworkConnectivity extends BroadcastReceiver { public static ConnectivityReceiverListener connectivityReceiverListener; @Override public void onReceive(Context context, Intent intent) { boolean isConnected=isnetworkok(); if (connectivityReceiverListener != null) { connectivityReceiverListener.onNetworkConnectionChanged(isConnected); } } public boolean isnetworkok(){ ConnectivityManager manager= (ConnectivityManager) TestApp.getInstance().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); if (manager!=null){ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { Network[] network = manager.getAllNetworks(); NetworkInfo info=manager.getActiveNetworkInfo(); if (info!=null&&info.isConnectedOrConnecting()){ return true; } /* if (network.length >= 0) { for (Network mntework : network) { info = manager.getNetworkInfo(mntework); if (info.getState().equals(NetworkInfo.State.CONNECTED)) { return true; } } }*/ }else { NetworkInfo[] networkInfos = manager.getAllNetworkInfo(); if (networkInfos != null) { for (NetworkInfo info : networkInfos) { if (info.getState() == NetworkInfo.State.CONNECTED) { return true; } } } } } return false; } public interface ConnectivityReceiverListener { void onNetworkConnectionChanged(boolean isConnected); } } |
Step4:
Finally which class you want to check internet automatically add like below
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
package com.androindian.raj.test; import android.content.Context; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkInfo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements NetworkConnectivity.ConnectivityReceiverListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onStart() { super.onStart(); TestApp.getInstance().setConnectivityListener(this); } @Override protected void onPause() { TestApp.getInstance().resetConnectivityListener(null); super.onPause(); } @Override public void onNetworkConnectionChanged(boolean isConnected) { if(isConnected){ Toast.makeText(getApplicationContext(), "Net is there", Toast.LENGTH_LONG).show(); }else { Toast.makeText(getApplicationContext(), "Net is not there", Toast.LENGTH_LONG).show(); } } } |