como para el título de la pregunta, desea comprobar el acceso a internet,
por lo que la forma más rápida y es eficaz al menos por ahora,
thnx a levit basado en su respuesta https://stackoverflow.com/a/27312494/3818437
Si solo desea comprobar la conexión a cualquier red (sin importar si hay internet disponible), la mayor parte del swers aquí (incluyendo aceptado), implementar isConnectedOrConnecting() funcionará bien. Si desea saber si usted tiene una conexión a Internet (como el título indica pregunta) lea sobre el Ping para el nombre principal servidores
public boolean isOnline() {
Runtime runtime = Runtime.getRuntime();
try {
Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
int exitValue = ipProcess.waitFor();
return (exitValue == 0);
} catch (IOException e) { e.printStackTrace(); }
catch (InterruptedException e) { e.printStackTrace(); }
return false; }
Eso es todo! Sí, en resumen, sí, es rápido, no, no necesita ejecutarse en segundo plano, no, no necesita privilegios de root.
Preguntas Posibles
¿Es esto realmente lo suficientemente rápido?
Sí, muy rápido!
¿Realmente no hay una forma confiable de verificar si hay disponibilidad de internet, , aparte de probar algo en internet?
No sé, pero hágamelo saber, y voy a editar mi respuesta.
¿No podría simplemente hacer ping a mi propia página, que deseo solicitar de todos modos?
Sure! Incluso puede verificar ambos, si desea diferenciar entre "conexión a internet disponible" y sus propios servidores son accesibles
¿Qué sucede si el DNS está inactivo?
Google DNS (por ejemplo, 8.8.8.8) es el servicio DNS público más grande del mundo . A partir de 2013 atiende 130 mil millones de solicitudes por día. Solo digamos decir, su aplicación no responde probablemente no sea la comidilla del día .
¿Qué permisos son requeridos?
Sólo acceso a Internet - lo que la sorpresa ^^ (? Por cierto ¿alguna vez has pensado, cómo algunos de los métodos sugeridos aquí, incluso podría tener una cola remota sobre la availablility de Internet, sin este permiso)
código de retorno se puede simplificar a: 'volver NETINFO = null && netInfo.isConnected();! ' –