Android功能模块化之网络连接状态判断
16lz
2021-01-22
有些时候在程序中需要判断网络连接状态、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) {(2)判断GPS是否打开
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;
}
public static boolean isGpsEnabled(Context context) {(3)判断Wifi是否连接
LocationManager locationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
List<String> accessibleProviders = locationManager.getAllProviders();
return accessibleProviders != null && accessibleProviders.size() > 0;
}
public static boolean isWifiEnabled(Context context) {(4)判断3G网络是否连接
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);
}
public static boolean is3GEnabled(Context context) {(5)判断当前网络是wifi还是3G
ConnectivityManager cManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cManager.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_MOBILE);
}
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;
}
更多相关文章
- 在不同状态下使用两个图像切换按钮
- 检测电池电量和充电状态
- android获取网络数据
- android:使用网络通信技术从客户端直接获取服务端的对象数据
- Android网络编程-----从服务器端获取xml数据并解析
- Android获取WIFI状态下的IP地址以及MAC地址
- 在Android的评论屏幕上实施网络呼叫的最佳做法如何?
- 网路搜集:java整型数与网络字节序的 byte[] 数组转换关系
- 在职状态,下家说要等我提辞职并做了人事背景调查后才发Offer. 这