¿Cuál es la forma correcta de verificar si una conexión de red móvil (GSM) está disponible en Android? (> 2.1) No quiero verificar si hay una conexión de datos disponible en la red móvil, solo compruebe la disponibilidad de la red en general. (Comprobar si son posibles las llamadas telefónicas a través de la red móvil)Cuál es la forma correcta de verificar la red móvil disponible (sin conexión de datos)
Por el momento estoy usando la siguiente comprobación:
public static boolean checkMobileNetworkAvailable(Context context){
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int networkType = tm.getNetworkType();
return (networkType != TelephonyManager.NETWORK_TYPE_UNKNOWN);
}
Pero parece que algunos dispositivos siempre informen "NETWORK_TYPE_UNKNOWN". Entonces el cheque falla todo el tiempo.
¿Hay un mejor enfoque para hacerlo?
Actualización:
¿Sería el siguiente enfoque mejor?
public static boolean checkMobileNetworkAvailable(Context context){
boolean isMobileNetworkAvailable = false;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] networks = cm.getAllNetworkInfo();
for(int i=0;i<networks.length;i++){
if(networks[i].getType() == ConnectivityManager.TYPE_MOBILE){
if(networks[i].isAvailable()){
isMobileNetworkAvailable = true;
}
}
}
return isMobileNetworkAvailable;
}
Mmh. Mi problema es que no quiero verificar la disponibilidad de los datos. Cuando uso el método ConnectivityManager getActiveNetworkInfo() obtengo la red de datos activa. Esa no es la información que me gustaría obtener. Solo quiero saber si estoy conectado a la red móvil. (no importa si tengo una conexión de datos) –
¿O sería suficiente recorrer todas las redes disponibles y buscar una conexión móvil? –