Android系统信息获取 之六:网络连接状态信息获取


Android系统可以通过WIFI和移动网络来连接互联网,系统网络连接状态是通过ConnectivityManager 类来获取的。关键代码如下:

ConnectivityManager connManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);

对于网络状态的判断,Android提供了大量的API,我们只要善于利用这些API就能很很容易获取各种网络的状态信息。总结的各种网络状态接口如下:


// API都有只不过是将其进行综合并作为自己工程中的工具函数使用,很方便的。/** * 获取当前网络状态的类型 * *  * @param mContext * @return 返回网络类型 */public static final int NETWORK_TYPE_NONE = -0x1; // 断网情况public static final int NETWORK_TYPE_WIFI = 0x1; // WIFI模式public static final int NETWOKR_TYPE_MOBILE = 0x2; // GPRS模式public static int getCurrentNetType(Context mContext) {ConnectivityManager connManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); // WIFINetworkInfo gprs = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); // GPRSif (wifi != null && wifi.getState() == State.CONNECTED) {Log.d(TAG, "Current net type:  WIFI.");return NETWORK_TYPE_WIFI;} else if (gprs != null && gprs.getState() == State.CONNECTED) {Log.d(TAG, "Current net type:  GPRS.");return NETWOKR_TYPE_MOBILE;}Log.e(TAG, "Current net type:  NONE.");return NETWORK_TYPE_NONE;}/** * 判断Android客户端网络是否连接 * 只能判断是否有可用的连接,而不能判断是否能连网 * @param context * @return true/false */public static boolean checkNet(Context context) {try {ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if (connectivity != null) {NetworkInfo info = connectivity.getActiveNetworkInfo();if (info != null && info.isConnected()) {if (info.getState() == NetworkInfo.State.CONNECTED) {return true;}}}} catch (Exception e) {return false;}return false;}/** * 检验网络连接 并toast提示  * @return */public boolean noteIntentConnect(Context context) {ConnectivityManager con = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkinfo = con.getActiveNetworkInfo();if (networkinfo == null || !networkinfo.isAvailable()) {// 当前网络不可用Toast.makeText(context.getApplicationContext(), "请先连接Internet!",Toast.LENGTH_SHORT).show();return false;}boolean wifi = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();if (!wifi) { // 提示使用WIFIToast.makeText(context.getApplicationContext(), "建议您使用WIFI以减少流量!",Toast.LENGTH_SHORT).show();}return true;}/** * 判断网络连接是否可用 *  * @param context * @return */public static boolean isNetworkAvailable(Context context) {ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if (cm == null) {} else {// 如果仅仅是用来判断网络连接// 则可以使用 cm.getActiveNetworkInfo().isAvailable();NetworkInfo[] info = cm.getAllNetworkInfo();if (info != null) {for (int i = 0; i < info.length; i++) {if (info[i].getState() == NetworkInfo.State.CONNECTED) {return true;}}}}return false;}    /**    * 判断网络状态是否可用    * @return true: 网络可用 ; false: 网络不可用    */public boolean isConnectInternet(Context mContext) {ConnectivityManager conManager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkInfo = conManager.getActiveNetworkInfo();if (networkInfo != null) { // 注意,这个判断一定要的,要不然会出错return networkInfo.isAvailable();}return false;}/** * 判断GPS是否打开 *  * @param context * @return */public static boolean isGpsEnabled(Context context) {LocationManager lm = ((LocationManager) context.getSystemService(Context.LOCATION_SERVICE));List<String> accessibleProviders = lm.getProviders(true);return accessibleProviders != null && accessibleProviders.size() > 0;}/** * 判断WIFI是否打开 *  * @param context * @return */public static boolean isWifiEnabled(Context context) {ConnectivityManager mgrConn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);TelephonyManager mgrTel = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);return ((mgrConn.getActiveNetworkInfo() != null && mgrConn.getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);}/** * 判断是否是3G网络 *  * @param context * @return */public static boolean is3gNet(Context context) {ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkINfo = cm.getActiveNetworkInfo();if (networkINfo != null&& networkINfo.getType() == ConnectivityManager.TYPE_MOBILE) {return true;}return false;}/** * 判断是否是WIFI网络 *  * @param context * @return */public static boolean isWifiNet(Context context) {ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkINfo = cm.getActiveNetworkInfo();if (networkINfo != null&& networkINfo.getType() == ConnectivityManager.TYPE_WIFI) {return true;}return false;}


更多相关文章

  1. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  2. android seekbar使用
  3. Android(安卓)获取系统prop
  4. 基于rk3288平台android5.1系统的wifi流程分析 ---- 打开wifi,扫描
  5. android 2.3 频率管理
  6. Android仿硅谷商城实现购物车实例代码
  7. android像launcher一样获取手机应用列表
  8. Android(安卓)Switch控件介绍
  9. Android判断网络状态的代码

随机推荐

  1. Android(安卓)面试题(有详细答案)
  2. Android(安卓)集成融云
  3. Daager2-初认识一
  4. Android中Fragment的用法总结
  5. Android(安卓)手机厂商推送服务调研
  6. Android(安卓)应用程序分析之Calculator
  7. Android(安卓)微信分享,无需那么麻烦。
  8. Android(安卓)Studio ADB not responding
  9. Android开发之旅:环境搭建及HelloWorld (A
  10. 手把手教你仿一个知乎日报Android客户端(