Каков правильный способ проверки доступности мобильной сети (GSM) на Android? ( > 2.1) Я не хочу проверять, есть ли доступ к данным через мобильную сеть, просто проверьте наличие сети в целом. (проверьте, разрешены ли телефонные звонки по мобильной сети)
В настоящий момент я использую следующую проверку:
public static boolean checkMobileNetworkAvailable(Context context){
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int networkType = tm.getNetworkType();
return (networkType != TelephonyManager.NETWORK_TYPE_UNKNOWN);
}
Но кажется, что некоторые устройства всегда отчитываются "NETWORK_TYPE_UNKNOWN". Таким образом, проверка не работает все время.
Есть ли лучший способ сделать это?
Обновление:
Будет ли улучшен следующий подход?
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;
}