androidandroid-permissionsandroid-internet

Android internet connectivity check problem


I'm new to Android development and working on an Android application that requires the phone to be connected to the internet, through either Wifi, EDGE or 3G.

This is the code that I'm using to check whether an internet connection is available

public static boolean isConnected()
{
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    return cm.getActiveNetworkInfo().isConnectedOrConnecting();
}

I've also set these permissions in the manifest file

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

This works fine in the emulator running version 1.5 of Android when 3G is enabled, but it crashes when I disable the 3G connection. My application throws a null pointer exception when I call isConnectedOrConnecting(). The same thing also happens on my HTC Desire running Android 2.1.

Hope that anyone knows the solution to this.

Thanks in advance!


Solution

  • If the crash is directly on your line:

    return cm.getActiveNetworkInfo().isConnectedOrConnecting();
    

    then that means getActiveNetworkInfo() returned null, because there is no active network -- in that case, your isConnected() method should return false.