Created
June 30, 2013 18:12
-
-
Save aniXification/5896231 to your computer and use it in GitHub Desktop.
Check internet connection change via Broadcast Receiver in background. #android
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class NetworkChangeReceiver extends BroadcastReceiver{ | |
private static final String LOG_TAG = "NetworkChangeReceiver"; | |
private boolean isConnected = false; | |
@Override | |
public void onReceive(Context context, Intent intent) { | |
Log.v(LOG_TAG, "Receieved notification about network status"); | |
isNetworkAvailable(context); | |
} | |
private boolean isNetworkAvailable(Context context) { | |
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); | |
if (connectivity != null) { | |
NetworkInfo[] info = connectivity.getAllNetworkInfo(); | |
if (info != null) { | |
for (int i = 0; i < info.length; i++) { | |
if (info[i].getState() == NetworkInfo.State.CONNECTED) { | |
if (!isConnected) { | |
Log.v(LOG_TAG, "Now you are connected to Internet!"); | |
Toast.makeText(context, "Internet availablle via Broadcast receiver", Toast.LENGTH_SHORT).show(); | |
isConnected = true; | |
// do your processing here --- | |
// if you need to post any data to the server or get | |
// status | |
// update from the server | |
} | |
return true; | |
} | |
} | |
} | |
} | |
Log.v(LOG_TAG, "You are not connected to Internet!"); | |
Toast.makeText(context, "Internet NOT availablle via Broadcast receiver", Toast.LENGTH_SHORT).show(); | |
isConnected = false; | |
return false; | |
} | |
} |
ShreyashPromact
thanks
This will only detect that the device is connected to a network but what if the network doesnot provide Internet connection?
So, basically I will suggest that with use of networking classes call the server api of your project which is working and if there is response then Connection established else not established.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Registering your receiver in manifest has been deprecated since API 24. It only works now if you use
Context.registerReceiver()
. Another solution I can think off is to use theAlarmManager
to do scheduled checks. If you app depends on the connectivity change during it's lifecycle, than it won't be affected by using context registration.