在 Android 上检查移动网络 (GSM) 连接是否可用的正确方法是什么? (>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;
}
最佳答案
我使用以下代码来了解我是否已连接到网络(无移动数据):
public static Boolean isMobileAvailable(Context appcontext) {
TelephonyManager tel = (TelephonyManager) appcontext.getSystemService(Context.TELEPHONY_SERVICE);
return ((tel.getNetworkOperator() != null && tel.getNetworkOperator().equals("")) ? false : true);
}
仅当手机实际注册到网络时才返回 NetworkOperator。
关于android - 检查可用移动网络的正确方法是什么(无数据连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6435861/