您的位置:首页 > 理论基础 > 计算机网络

Android功能模块化之网络连接状态判断

2013-05-15 15:05 507 查看
有些时候在程序中需要判断网络连接状态、GPS连接状态等,主要是通过调用context.getSystemService(String name)来获取系统相应的服务,再通过相应的服务去判断其状态信息。

传入Name返回对象说明
WINDOW_SERVICEWindowManager管理打开的窗口程序
LAYOUT_INFLATER_SERVICELayoutInflater取得xml里定义的view
ACTIVITY_SERVICEActivityManager管理应用程序的系统状态
POWER_SERVICEPowerManager电源服务
ALARM_SERVICEAlarmManager闹钟服务
NOTIFICATION_SERVICENotificationManager状态栏服务
KEYGUARD_SERVICEKeyguardManager键盘锁服务
LOCATION_SERVICELocationManager位置服务,如GPS
SEARCH_SERVICESearchManager搜索服务
VERATOR_SERVICEVebrator手机震动的服务
CONNECTIVITY_SERVICEConnectivity网络连接服务
WIFI_SERVICEWifiManagerWiFi服务
TELEPHONY_SERVICETelephonyManager电话服务
(1)判断网络是否可用

public static boolean isNetworkAvailable(Context context) {
boolean flag = false;
ConnectivityManager cManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cManager != null) {
NetworkInfo[] infos = cManager.getAllNetworkInfo();
if (infos != null) {
for (int i = 0; i < infos.length; i++) {
if (infos[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return flag;
}
(2)判断GPS是否打开

public static boolean isGpsEnabled(Context context) {
LocationManager locationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
List<String> accessibleProviders = locationManager.getAllProviders();
return accessibleProviders != null && accessibleProviders.size() > 0;
}
(3)判断Wifi是否连接
public static boolean isWifiEnabled(Context context) {
ConnectivityManager cManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
TelephonyManager tManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
return ((cManager.getActiveNetworkInfo() != null && cManager
.getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || tManager
.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);
}
(4)判断3G网络是否连接
public static boolean is3GEnabled(Context context) {
ConnectivityManager cManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cManager.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_MOBILE);
}
(5)判断当前网络是wifi还是3G

public static boolean isWifiOr3G(Context context) {
ConnectivityManager cManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cManager.getActiveNetworkInfo();
if (networkInfo != null
&& networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
}
return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: