¿Detectando conectividad de red limitada en Android?
Hay una serie de preguntas sobre cómo detectar la conectividad de red en Android.https://stackoverflow.com/a/4239019/90236 proporciona una respuesta muy detallada yhttps://stackoverflow.com/a/8548926/90236 muestra métodos para identificar el tipo de red a la que se conecta.
Detectamos la conectividad de la red utilizando un código similar a las respuestas como:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
Esto nos permite advertir a un usuario si están fuera de línea. Sin embargo, no nos ayuda a identificar si un usuario tiene conectividad limitada. Existen condiciones de conectividad limitada que han hecho que los usuarios se quejen. Éstos incluyen:
Los usuarios están conectados a una red wifi doméstica, pero el módem por cable o el servicio de Internet no están disponibles.
Los usuarios están en un hotel o cafetería y se conectan con éxito a una red wifi, pero la red requiere que inicien sesión o acepten los términos de servicio antes de que se les otorgue acceso completo a la red.
En ambas situaciones, nuestra prueba isNetworkAvailable () devuelve true. El sistema operativo nos dice que estamos conectados a una red. Sin embargo, el usuario no tiene conectividad a internet utilizable.
¿Hay una buena manera de determinar que el usuario tiene una conexión de red completamente funcional?
Estoy considerando llamar a un servicio web ligero para verificar su conectividad y advertir al usuario si la aplicación no obtiene un retorno válido del servicio. ¿Esto es una exageración? ¿O han tenido otros que recurrir a técnicas similares?