Cách kiểm tra chính xác liệu kết nối mạng di động (GSM) có khả dụng trên Android không? (> 2.1) Tôi không muốn kiểm tra nếu có kết nối dữ liệu có sẵn trên mạng di động chỉ cần kiểm tra tính khả dụng của mạng nói chung. (Kiểm tra nếu cuộc gọi điện thoại qua mạng di động có thể xảy ra)Cách chính xác để kiểm tra mạng di động có sẵn (không có kết nối dữ liệu)
Hiện nay tôi đang sử dụng việc kiểm tra sau:
public static boolean checkMobileNetworkAvailable(Context context){
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int networkType = tm.getNetworkType();
return (networkType != TelephonyManager.NETWORK_TYPE_UNKNOWN);
}
Nhưng có vẻ như một số thiết bị luôn báo cáo lại "NETWORK_TYPE_UNKNOWN". Vì vậy, kiểm tra thất bại tất cả các thời gian.
Có cách tiếp cận tốt hơn để thực hiện không?
Cập nhật:
Cách tiếp cận sau có tốt hơn không?
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. Vấn đề của tôi là tôi không muốn kiểm tra tính khả dụng của dữ liệu. Khi sử dụng phương thức ConnectivityManager getActiveNetworkInfo() Tôi nhận được mạng dữ liệu hoạt động. Đó không phải là thông tin tôi muốn nhận được. Tôi chỉ muốn biết liệu tôi có được kết nối với mạng di động hay không. (nó không quan trọng nếu tôi có một kết nối dữ liệu) –
Hoặc nó sẽ là đủ để lặp qua tất cả các mạng có sẵn và kiểm tra một mạng di động? –