Jaki jest poprawny sposób sprawdzenia, czy połączenie z siecią komórkową (GSM) jest dostępne w systemie Android? (> 2.1) Nie chcę sprawdzać, czy jest dostępne połączenie danych przez sieć komórkową, tylko sprawdź ogólnie dostępność sieci. (Sprawdzić, czy możliwe są rozmowy telefoniczne przez sieć komórkową)Jaki jest prawidłowy sposób sprawdzenia dostępności sieci komórkowej (brak połączenia danych)?
w tej chwili używam następujący czek:
public static boolean checkMobileNetworkAvailable(Context context){
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int networkType = tm.getNetworkType();
return (networkType != TelephonyManager.NETWORK_TYPE_UNKNOWN);
}
Ale wydaje się, że niektóre urządzenia zawsze zgłoś się „NETWORK_TYPE_UNKNOWN”. Więc czek nie udaje się cały czas.
Czy jest lepsze podejście do robienia tego?
Aktualizacja:
Czy następujące podejście jest lepsze?
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. Mój problem polega na tym, że nie chcę sprawdzać dostępności danych. Podczas korzystania z metody ConnectivityManager getActiveNetworkInfo() otrzymuję aktywną sieć danych. To nie są informacje, które chciałbym uzyskać. Chcę tylko wiedzieć, czy mam połączenie z siecią komórkową. (nie ma znaczenia, czy mam połączenie danych) –
A może wystarczyłoby powtórzenie wszystkich dostępnych sieci i sprawdzenie mobilnego? –