¿Cómo comprobar la conectividad de Internet en android?
amigos,
Estoy tratando de comprobar Internetconnectivity en android y el uso de código siguiente
final ConnectivityManager conn_manager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); final NetworkInfo network_info = conn_manager.getActiveNetworkInfo(); if ( network_info != null && network_info.isConnected() ) { return true; } else { return false; }
Pero me da la red / conectividad wifi si wifi está conectado que me da la verdad y si Internet no está conectado a continuación, también me da la verdad.
Cualquiera me guía cuál es la solución?
Probablemente algún problema con la lógica que tiene en la cláusula if
allí.
Yo uso esto:
/** * Checks if we have a valid Internet Connection on the device. * @param ctx * @return True if device has internet * * Code from: http://www.androidsnippets.org/snippets/131/ */ public static boolean haveInternet(Context ctx) { NetworkInfo info = (NetworkInfo) ((ConnectivityManager) ctx .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); if (info == null || !info.isConnected()) { return false; } if (info.isRoaming()) { // here is the roaming option you can change it if you want to // disable internet while roaming, just return false return false; } return true; }
Puede utilizar requstRouteToHost para comprobar si puede conectarse a una dirección IP específica.
Utilice esta biblioteca ingeniosa: http://code.google.com/p/connectivity
Puede suscribirse a la notificación de estado de la red y obtener una devolución de llamada cuando cambia el estado de la red. O, puede consultar directamente si la red está disponible. Muy fácil de usar.