hacer - validar si tengo internet android studio




Detectar si hay una conexión a Internet disponible en Android (4)

El método getActiveNetworkInfo () de ConnectivityManager devuelve una instancia de NetworkInfo que representa la primera interfaz de red conectada que puede encontrar o nula si no hay ninguna si las interfaces están conectadas. Comprobar si este método devuelve nulo debería ser suficiente para saber si hay una conexión a Internet disponible.

private boolean isNetworkAvailable() {
     ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
     NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
     return activeNetworkInfo != null; 
}

También necesitarás:

en su manifiesto android.

Editar:

Tenga en cuenta que tener una interfaz de red activa no garantiza que un servicio de red en particular esté disponible. Los problemas de redes, el tiempo de inactividad del servidor, la baja señal, los portales cautivos, los filtros de contenido y similares pueden impedir que su aplicación llegue a un servidor. Por ejemplo, no puede estar seguro de si su aplicación puede acceder a Twitter hasta que reciba una respuesta válida del servicio de Twitter.

getActiveNetworkInfo () nunca debe dar un valor nulo. No sé qué estaban pensando cuando se les ocurrió eso. Debería darte un objeto siempre.

Posible duplicado:
¿Cómo comprobar el acceso a internet en Android? InetAddress nunca los tiempos de espera

Necesito detectar si el dispositivo Android está conectado a Internet.

La clase NetworkInfo proporciona un método no estático isAvailable() que suena perfecto.

El problema es que:

NetworkInfo ni = new NetworkInfo();
if (!ni.isAvailable()) {
    // do something
}

arroja este error:

The constructor NetworkInfo is not visible.

La apuesta segura es que hay otra clase que devuelve un objeto NetworkInfo . Pero no sé cuál.

  1. ¿Cómo hacer que funcione el fragmento de código anterior?
  2. ¿Cómo pude encontrar la información que necesitaba en la documentación en línea?
  3. ¿Puede sugerir una mejor manera para este tipo de detección?

El método getActiveNetworkInfo() de ConnectivityManager devuelve una instancia de NetworkInfo representa la primera interfaz de red conectada que puede encontrar o que es null si ninguna de las interfaces está conectada. Comprobar si este método devuelve null debería ser suficiente para saber si una conexión a Internet está disponible o no.

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

También necesitarás:

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

en su manifiesto android.

Editar:

Tenga en cuenta que tener una interfaz de red activa no garantiza que un servicio de red en particular esté disponible. Los problemas de red, el tiempo de inactividad del servidor, la baja señal, los portales cautivos, los filtros de contenido y similares pueden impedir que su aplicación llegue a un servidor. Por ejemplo, no puede estar seguro de si su aplicación puede acceder a Twitter hasta que reciba una respuesta válida del servicio de Twitter.


Probablemente me he encontrado:

ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
return connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting();

También otra nota importante. Debes configurar android.permission.ACCESS_NETWORK_STATE en tu AndroidManifest.xml para que esto funcione.

_ ¿cómo podría haber encontrado la información que necesitaba en la documentación en línea?

Solo tiene que leer la documentación y las clases correctamente y encontrará todas las respuestas que busca. Echa un vistazo a la documentación en ConnectivityManager . La descripción te dice qué hacer.







android-internet