有些时候在程序中需要判断网络连接状态、GPS连接状态等,主要是通过调用context.getSystemService(String name)来获取系统相应的服务,再通过相应的服务去判断其状态信息。
传入Name | 返回对象 | 说明 |
WINDOW_SERVICE | WindowManager | 管理打开的窗口程序 |
LAYOUT_INFLATER_SERVICE | LayoutInflater | 取得xml里定义的view |
ACTIVITY_SERVICE | ActivityManager | 管理应用程序的系统状态 |
POWER_SERVICE | PowerManager | 电源服务 |
ALARM_SERVICE | AlarmManager | 闹钟服务 |
NOTIFICATION_SERVICE | NotificationManager | 状态栏服务 |
KEYGUARD_SERVICE | KeyguardManager | 键盘锁服务 |
LOCATION_SERVICE | LocationManager | 位置服务,如GPS |
SEARCH_SERVICE | SearchManager | 搜索服务 |
VERATOR_SERVICE | Vebrator | 手机震动的服务 |
CONNECTIVITY_SERVICE | Connectivity | 网络连接服务 |
WIFI_SERVICE | WifiManager | WiFi服务 |
TELEPHONY_SERVICE | TelephonyManager | 电话服务 |
(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;
}