I'm trying to check for INTERNET connectivity from an Android app but just keep running in to problems.
I'm NOT looking for code that tests for an available network connection - I've got that bit working - this is to test whether I can reach an internet site or not.
(I appreciate that if I am behind a system which presents a logon screen instead of the requested site, I may not get the exact result I want, but I will handle that later)
Thanks to the following question I think I've made some progress, but when I run the app it crashes out (error info below).
The code I have so far is as follows (and I must admit that I find the try/catch stuff a bit puzzling and tedious :-/ )
static public boolean isInternetReachable() {
    int statusCode = -1;
    try{
        URL url = new URL("http://www.google.com/humans.txt");
        HttpURLConnection http = (HttpURLConnection) url.openConnection();
        statusCode = http.getResponseCode();
        http.disconnect();
    } catch (MalformedURLException ex) {
        return false;
    } catch (IOException ex) {
        return false;
    }
    if (statusCode == HttpURLConnection.HTTP_OK) {
        return true;
    }
    else
    {
        //connection is not OK
        return false;
    }
}
I'm sure there are neater ways to do this and so any general advice is welcome.
The error that I'm getting when the app crashes is:
01-24 19:53:14.767 10617-10617/com.nooriginalthought.bluebadgeparking E/AndroidRuntime:
     FATAL EXCEPTION: main
     Process: com.nooriginalthought.bluebadgeparking, PID: 10617
     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nooriginalthought.bluebadgeparking/com.nooriginalthought.bluebadgeparking.PreLoadChecks}: android.os.NetworkOnMainThreadException
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2411)
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474)
         at android.app.ActivityThread.access$800(ActivityThread.java:144)
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359)
         at android.os.Handler.dispatchMessage(Handler.java:102)
         at android.os.Looper.loop(Looper.java:155)
         at android.app.ActivityThread.main(ActivityThread.java:5696)
         at java.lang.reflect.Method.invoke(Native Method)
         at java.lang.reflect.Method.invoke(Method.java:372)
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
     Caused by: android.os.NetworkOnMainThreadException
         at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1155)
         at java.net.InetAddress.lookupHostByName(InetAddress.java:418)
         at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
         at java.net.InetAddress.getAllByName(InetAddress.java:215)
         at com.android.okhttp.HostResolver$1.getAllByName(HostResolver.java:29)
         at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:236)
         at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:124)
         at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:272)
         at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
         at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373)
         at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:323)
         at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:491)
         at com.nooriginalthought.bluebadgeparking.PreLoadChecks.isInternetReachable(PreLoadChecks.java:41)
         at com.nooriginalthought.bluebadgeparking.PreLoadChecks.onCreate(PreLoadChecks.java:70)
         at android.app.Activity.performCreate(Activity.java:5958)
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474) 
         at android.app.ActivityThread.access$800(ActivityThread.java:144) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359) 
         at android.os.Handler.dispatchMessage(Handler.java:102) 
         at android.os.Looper.loop(Looper.java:155) 
         at android.app.ActivityThread.main(ActivityThread.java:5696) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:372) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823) 
 
     
    