Reputation: 27
How can I recognise good connection with internet network ? We have connection with WiFi but we don't have internet in this WiFi network, or we have turned on gprs (transmission data) internet but we don't have money on account or we don't have network packet and we don't have internet connection, but gprs (transmission data) is still turned on and when I doing that:
if(connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected() ||
connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {
// Available network
}
I will get positive result, becouse wifi is connected or gprs (transmission data) is turned on, but I don't have connection with internet... How i can recognise this situation ?
Upvotes: 2
Views: 1299
Reputation: 126455
This is my method to check for connectivity.
private boolean connected = false;
private boolean haveConnectedWifi = false;
private boolean haveConnectedMobile = false;
public boolean isNetAvailable(Context context)
{
try {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
//* Check for availability and if is really connected.
connected = networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected();
//* what kind, Connectivity WIFI or MOBILE?.
if(networkInfo != null){
NetworkInfo[] netInfo = connectivityManager.getAllNetworkInfo();
for (NetworkInfo ni : netInfo) {
if ((ni.getTypeName().equalsIgnoreCase("WIFI")) && ni.isConnected())
{
Log.i("Connectivity", " WIFI IS ENABLED");
haveConnectedWifi = true;
}
if ((ni.getTypeName().equalsIgnoreCase("MOBILE")) && ni.isConnected())
{
Log.i("Connectivity", " MOBILE IS ENABLED");
haveConnectedMobile = true;
}
}
}
return connected;
} catch (Exception e) {
Log.e("Exception Connectivity", e.getMessage());
}
return connected;
}
if you want to know only if "Network is available":
public Boolean isNetAvailable(Context context) {
try{
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobileInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifiInfo.isConnected() || mobileInfo.isConnected()) {
return true;
}
}
catch(Exception e){
Log.e("Exception Connectivity", e.getMessage());
}
return false;
}
add the permissions in manifest.xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Upvotes: 1
Reputation: 685
You can easily check internet status by following:
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
State mobileNetState = connectivityManager.getNetworkInfo(0).getState();
State wifiState = connectivityManager.getNetworkInfo(1).getState();
if (wifiState == State.CONNECTED) {
return true;
} else if ((wifiState == State.DISCONNECTED || wifiState == State.UNKNOWN)
&& mobileNetState == State.CONNECTED) {
return true;
} else {
return false;
}
}
If you need to get the status that, which type of internet is now connected. Then you should little bit customization(Like as return type) of this code.
Upvotes: 2