Android系统信息获取 之六:网络连接状态信息获取
2013-08-07 13:35
591 查看
Android系统信息获取 之六:网络连接状态信息获取
Android系统可以通过WIFI和移动网络来连接互联网,系统网络连接状态是通过ConnectivityManager 类来获取的。关键代码如下:
对于网络状态的判断,Android提供了大量的API,我们只要善于利用这些API就能很很容易获取各种网络的状态信息。总结的各种网络状态接口如下:
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); // WIFI NetworkInfo gprs = connManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); // GPRS if (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) { // 提示使用WIFI Toast.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; }
相关文章推荐
- Android系统信息获取 之六:网络连接状态信息获取
- Android获取当前的网络连接信息和网络链接状态 GPRS 和 WiFi网络
- Android获取网络连接状态(3G/Wifi)及调用网络配置界面
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十七节 设置TCP连接状态
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android程序:使用系统服务*1.获取网络状态 * 2.打开关闭wifi * 3.获取系统音量 * 4.获取运行程序的包名
- 【Java】【系统状态】获取系统信息(包括操作系统、jvm、cpu、内存、硬盘、网络、io等)
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android系统信息获取 之十:移动网络相关信息获取
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android判断网络连接状态,判断网络连接方式,获取IP地址
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- 【Java】【系统状态】获取系统信息(包括操作系统、jvm、cpu、内存、硬盘、网络、io等)
- 获取Android网络连接信息
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android 获取当前网络连接的类型信息
- 【Java】【系统状态】获取系统信息(包括操作系统、jvm、cpu、内存、硬盘、网络、io等)
- Android开发之获取手机网络状态及网络是否连接