检查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);
}
Run Code Online (Sandbox Code Playgroud)
但似乎有些设备总是报告"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;
}
Run Code Online (Sandbox Code Playgroud)
我使用以下代码来了解我是否已连接到网络(没有移动数据):
public static Boolean isMobileAvailable(Context appcontext) {
TelephonyManager tel = (TelephonyManager) appcontext.getSystemService(Context.TELEPHONY_SERVICE);
return ((tel.getNetworkOperator() != null && tel.getNetworkOperator().equals("")) ? false : true);
}
Run Code Online (Sandbox Code Playgroud)
仅当手机实际注册到网络时,才会返回NetworkOperator.
看看我对Problem inDetecting Internet Connection in Android 的回答。
NETWORK_TYPE_UNKNOWN
如果网络不可用或仍在连接,您可能会收到响应。
归档时间: |
|
查看次数: |
12086 次 |
最近记录: |