Created
October 13, 2016 11:39
-
-
Save guptasanchit90/f8e510aa3feb4ade0835af2be786f795 to your computer and use it in GitHub Desktop.
This file contains 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
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