package me.devsaki.hentoid.util; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; /** * Created by avluis on 7/6/15. * General wrapper for network status query. */ public final class NetworkStatus { private static final String TAG = LogHelper.makeLogTag(NetworkStatus.class); private static NetworkInfo init(Context cxt) { Context context = cxt.getApplicationContext(); ConnectivityManager connMgr = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); return connMgr.getActiveNetworkInfo(); } public static boolean isOnline(Context cxt) { boolean connected; try { NetworkInfo netInfo = init(cxt); connected = netInfo != null && netInfo.isAvailable() && netInfo.isConnected(); return connected; } catch (Exception e) { LogHelper.e(TAG, e); } return false; } public static boolean isWifi(Context cxt) { boolean wifi; try { NetworkInfo netInfo = init(cxt); wifi = netInfo != null && netInfo.isConnected() && netInfo.getType() == ConnectivityManager.TYPE_WIFI; return wifi; } catch (Exception e) { LogHelper.e(TAG, e); } return false; } public static boolean isMobile(Context cxt) { boolean mobile; try { NetworkInfo netInfo = init(cxt); mobile = netInfo != null && netInfo.isConnected() && netInfo.getType() == ConnectivityManager.TYPE_MOBILE; return mobile; } catch (Exception e) { LogHelper.e(TAG, e); } return false; } // Must be run on a background thread!! public static boolean hasInternetAccess(Context cxt) { if (isOnline(cxt)) { try { HttpURLConnection url = (HttpURLConnection) (new URL("http://clients3.google.com/generate_204").openConnection()); url.setRequestProperty("User-Agent", "Android"); url.setRequestProperty("Connection", "close"); url.setConnectTimeout(100); url.setReadTimeout(100); url.connect(); return (url.getResponseCode() == 204 && url.getContentLength() == 0); } catch (IOException e) { LogHelper.e(TAG, e, "Error while checking for internet connection"); } } else { LogHelper.d(TAG, "No network available!"); } return false; } }