Detect if android device is connected to the internet

Caesar Krit picture Caesar Krit · Nov 26, 2015 · Viewed 8k times · Source

this is my class that checks if the device is connected to the internet.

import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;


public class ConnectionDetector {
    private Context _context;

    public ConnectionDetector(Context context) {
        this._context = context;
    }

    public boolean isConnectingToInternet() {
        if (networkConnectivity()) {
            try {
                HttpURLConnection urlc = (HttpURLConnection) (new URL(
                        "http://www.google.com").openConnection());
                urlc.setRequestProperty("User-Agent", "Test");
                urlc.setRequestProperty("Connection", "close");
                urlc.setConnectTimeout(3000);
                urlc.setReadTimeout(4000);
                urlc.connect();
                // networkcode2 = urlc.getResponseCode();
                return (urlc.getResponseCode() == 200);
            } catch (IOException e) {
                return (false);
            }
        } else
            return false;

    }

    private boolean networkConnectivity() {
    ConnectivityManager cm = (ConnectivityManager) _context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = cm.getActiveNetworkInfo();
    if (networkInfo != null && networkInfo.isConnected()) {
        return true;
    }
    return false;
}

}

then i call it here but it doesnt seem to return true or false. there are no errors and my app doesnt crash it just doesnt print anything out. anyone know why?

public void CheckInternet(){

   // Boolean isInternetPresent;

    ConnectionDetector cd = new ConnectionDetector(getApplicationContext());

 //   isInternetPresent = cd.isConnectingToInternet();

    if (cd.isConnectingToInternet()) {
        // Internet Connection is Present

        Log.i(TAG, "INTERNET IS GUUD");

    } else {
        // Internet connection is not present
        // Ask user to connect to Internet
        Log.i(TAG, "INTERNET IS NOOOO GUUD");

    }
}

Answer

Lay Leangsros picture Lay Leangsros · Nov 26, 2015

Create a class :

public class Utility {
    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivityManager
                = (ConnectivityManager)  context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }
}

Then you call methode from activity, it will return true or false:

Utility.isNetworkAvailable(AnyActivity.this);

And don't forget to add permission to android manifest

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>