Probé el siguiente código para comprobar si mi teléfono móvil está conectado a una red inalámbrica y funciona bien cuando quiero saber si mi teléfono móvil está conectado a la red, pero no proporciona información sobre el acceso a Internet ... algo como "Pinging" en cualquier sitio web. En realidad, seguí muchos enlaces pero todavía no recibo respuesta, así que estaré muy agradecido si alguien puede ayudar.Android - ¿Cómo comprobar el acceso a Internet, no solo la conectividad a wifi?
Gracias de antemano.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Toast t = new Toast(getApplicationContext());
if (isInternetOn()) {
// INTERNET IS AVAILABLE, DO STUFF..
Toast.makeText(ConnectivityTestActivity.this,"Network is Available", Toast.LENGTH_LONG).show();
}
else {
// NO INTERNET AVAILABLE, DO STUFF..
Toast.makeText(ConnectivityTestActivity.this,"No Network Available", Toast.LENGTH_LONG).show();
}
}
public final boolean isInternetOn() {
ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
// ARE WE CONNECTED TO THE NET
if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) {
// MESSAGE TO SCREEN FOR TESTING (IF REQ)
//Toast.makeText(this, connectionType + ” connected”, Toast.LENGTH_SHORT).show();
return true;
} else if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ) {
return false;
}
return false;
}}
EDIT:
siguen a continuación enlace que contiene una gran respuesta para el servidor Ping Google y obtener el resultado
https://stackoverflow.com/a/16458623/1239911
Sólo una nota ... que utiliza el código anterior de otra pregunta aquí en stackoverflow.com, podemos utilizar 'ConnectivityManager.Type_WIFI' o 'ConnectivityManager.Type_Mobile' en lugar de 0 y 1 en el getNetworkInfo() – Amt87
¿Por qué siquiera necesitas la parte 'else if'? Si no estamos conectados eso significa que estamos desconectados. ¿Podrías decirme si hay algún uso de esta parte 'else if'? –
Puede estar CONECTADO, DESCONECTADO, CONECTANDO, DESCONECTANDO, SUSPENDIDO y DESCONOCIDO. Puede verificar estos estados en developer.android.com o al hacer clic en ctrl + espacio después de (NetworkInfo.State) en su código. Deseo que esto pueda ser útil. – Amt87