I have created a Android application using Google Maps. Now I want to check whether an internet connection is available or not. I search in Google and finally I got solution through Stackoverflow:
boolean HaveConnectedWifi = false;
boolean HaveConnectedMobile = false;
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo)
{
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
if (ni.isConnected())
HaveConnectedWifi = true;
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
if (ni.isConnected())
HaveConnectedMobile = true;
}
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
I have written my online Google map code if it return true and offline code if it return false.
My problem is its showing an internet connection is available even when it is not. Where have I made a mistake?
Try using
NetworkInfo ni = cm.getActiveNetworkInfo();instead ofNetworkInfo ni = cm.getAllNetworkInfo();. There should only be one active data network at any one time because Android will use the best available and shut down the others to conserve battery.Also, I tend to use
ni.isConnectedOrConnecting();instead ofni.isConnected();because it can catch transition states better.I also use
ni.getType() == ConnectivityManager.TYPE_WIFIinstead ofni.getTypeName().equalsIgnoreCase("WIFI")because it is much more efficient to compare twointvalues than it is to compare two strings.The following code works for me: