i am trying to check for internet connection in my application. first, i am checking if wifi or mobile data is on, then i am checking if there is an active internet connection. what i am currently doing:
    public class ConnectivityReceiver extends BroadcastReceiver {
    String TAG="ConnectivityReceiver";
public static boolean hasInternetAccess() {
    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();
        return (urlc.getResponseCode() == 204 &&
                urlc.getContentLength() == 0);
    } catch (IOException e) {
    }
    return false;
}
@Override
public void onReceive(Context arg0, Intent intent) {
      String action = intent.getAction();
        boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,false);
         if(noConnectivity){
             try{
                 TaskListAndOptionsActivity.item3.setIcon(R.drawable.ic_action_network_nowifi);
             }
             catch(Exception e)
             {
             }
         }
         else
         {
             Boolean status = hasInternetAccess();
             if(status==true)
             {
                 try{
                     TaskListAndOptionsActivity.item3.setIcon(R.drawable.ic_action_network_wifi);
                 }
                 catch(Exception e)
                 {
                 }
             }
             else
             {
                 try{
                     TaskListAndOptionsActivity.item3.setIcon(R.drawable.ic_action_network_nowifi);
                 }
                 catch(Exception e)
                 {
                 }
             }
         }
}
but i am getting the following error:
java.lang.RuntimeException: Unable to start receiver connectionchecker.ConnectivityReceiver: android.os.NetworkOnMainThreadException
            at android.app.ActivityThread.handleReceiver(ActivityThread.java:2668)
            at android.app.ActivityThread.access$1800(ActivityThread.java:172)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1384)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5653)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.os.NetworkOnMainThreadException
            at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1166)
            at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
            at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
            at java.net.InetAddress.getAllByName(InetAddress.java:214)
            at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28)
            at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216)
            at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122)
            at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:390)
            at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:343)
            at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:289)
            at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
            at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
            at connectionchecker.NetworkUtil.hasInternetAccess(NetworkUtil.java:21)
            at connectionchecker.ConnectivityReceiver.onReceive(ConnectivityReceiver.java:46)
            at android.app.ActivityThread.handleReceiver(ActivityThread.java:2653)
            at android.app.ActivityThread.access$1800(ActivityThread.java:172)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1384)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5653)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
            at dalvik.system.NativeStart.main(Native Method)
 
     
     
     
    