有些时候在程序中需要判断网络连接状态、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;
}









更多相关文章

  1. 在不同状态下使用两个图像切换按钮
  2. 检测电池电量和充电状态
  3. android获取网络数据
  4. android:使用网络通信技术从客户端直接获取服务端的对象数据
  5. Android网络编程-----从服务器端获取xml数据并解析
  6. Android获取WIFI状态下的IP地址以及MAC地址
  7. 在Android的评论屏幕上实施网络呼叫的最佳做法如何?
  8. 网路搜集:java整型数与网络字节序的 byte[] 数组转换关系
  9. 在职状态,下家说要等我提辞职并做了人事背景调查后才发Offer. 这

随机推荐

  1. Android Version
  2. Android Studio若干问题
  3. Android 开发视频 老罗
  4. android gallery 去掉渐变的边框
  5. android:persistentDrawingCache="animat
  6. Android verbose debug enable
  7. Andorid 网络流量统计
  8. Android 坑
  9. Android Permissions - Protection Level
  10. android 学习电子书——下载