Android系统信息获取 之六:网络连接状态信息获取
来源:互联网 发布:萤火视频桌面软件 编辑:程序博客网 时间:2024/06/04 18:19
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;}
- Android系统信息获取 之六:网络连接状态信息获取
- Android系统信息获取 之六:网络连接状态信息获取
- Android 获取网络状态信息
- 获取Android网络连接信息
- 获取网络连接信息
- Android系统信息获取 之四:系统语言信息获取
- Android系统信息获取 之四:系统语言信息获取
- Android系统信息获取 之十:移动网络相关信息获取
- Android系统信息获取 之十:移动网络相关信息获取
- Android系统信息获取 之二:版本信息获取
- Android系统信息获取 之三:CPU信息获取
- Android系统信息获取 之三:CPU信息获取
- Android系统信息获取 之二:版本信息获取
- android获取系统信息
- android获取系统信息
- Android系统信息获取
- Android系统信息获取
- Android 获取系统信息
- linux下可执行文件的库们
- 导出文件在IE和火狐中文件名乱码问题的解决
- java获取url网页指定内容
- 如何访问局域网中的DB服务器
- 第74天的交易(2013-8-6)(-50)(-182.28)(数据单总盈利:51.35)
- Android系统信息获取 之六:网络连接状态信息获取
- 最小生成树(Kruskal算法)--poj2421
- ===《C/C++笔记》===面向对象
- 直接将XML存入到SQL中(SQL2008)
- Delphi TClientDataSet
- Thinkphp的五种查询方式
- 获取客户端网卡mac地址的方法
- HDU 3397 Sequence operation (线段树)
- NSNumber,NSValue,NSNull