Quantcast
Channel: Everyday I'm coding » networking
Viewing all articles
Browse latest Browse all 10

How to check internet access on Android? InetAddress never timeouts

$
0
0

I got a AsyncTask that is supposed to check the network access to a host name. But the doInBackground is never timed out. Anyone have a clue?

public class HostAvailabilityTask extends AsyncTask<String, Void, Boolean>{

private Main main;

public HostAvailabilityTask(Main main){
    this.main = main;
}

protected Boolean doInBackground(String... params) {
    Main.Log("doInBackground() isHostAvailable():"+params[0]);

    try {
        return InetAddress.getByName(params[0]).isReachable(30); 
    } catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;       
}

protected void onPostExecute(Boolean... result) {
    Main.Log("onPostExecute()");

    if(result[0] == false){
        main.setContentView(R.layout.splash);
        return;
    }

    main.continueAfterHostCheck();
}

}


Solution:

@Eddie. Just a minor edit to your solution – if the device is in airplane mode (or presumably in other situations where there’s no available network), cm.getActiveNetworkInfo() will be null, so you need to add a null check.

Modified solution below:

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
        return true;
    }
    return false;
}

Also add the following permission to the Android Manifest

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

One other small point, if you absolutely need a network connection at the given point in time, then it might be better to use netInfo.isConnected() rather than netInfo.isConnectedOrConnecting. I guess this is up to the indivudal use-case however.


Viewing all articles
Browse latest Browse all 10

Trending Articles