Skip to content

Instantly share code, notes, and snippets.

@guptasanchit90
Created October 13, 2016 11:39
Show Gist options
  • Save guptasanchit90/f8e510aa3feb4ade0835af2be786f795 to your computer and use it in GitHub Desktop.
Save guptasanchit90/f8e510aa3feb4ade0835af2be786f795 to your computer and use it in GitHub Desktop.
package com.mobyta.common;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.annotation.NonNull;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* A network utility class to check for Internet access and connectivity
*/
public class NetworkUtils {
/**
* Check for Network connection status, if boolean is true it will also check for Internet access
*
* @param context
* @param networkListener
*/
public static void checkInternetConnection(@NonNull Context context, @NonNull NetworkListener networkListener, @NonNull boolean checkForInternetAccess) {
boolean isConnectToInternet = isNetworkConnected(context);
if (checkForInternetAccess && isConnectToInternet) {
hasInternetAccess(networkListener);
} else {
networkListener.updateNetworkState(isConnectToInternet);
}
}
private static boolean isNetworkConnected(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnectedOrConnecting());
}
private static void hasInternetAccess(final NetworkListener networkListener) {
new Thread() {
public void run() {
try {
HttpURLConnection urlc = (HttpURLConnection)
(new URL("http://clients3.google.com/generate_204")
.openConnection());
urlc.setRequestProperty("User-Agent", "Android");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1500);
urlc.connect();
if ((urlc.getResponseCode() == 204 &&
urlc.getContentLength() == 0)) {
networkListener.updateNetworkState(true);
} else {
networkListener.updateNetworkState(false);
}
} catch (IOException e) {
networkListener.updateNetworkState(false);
}
}
}.start();
}
public interface NetworkListener {
void updateNetworkState(boolean status);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment