一个小小的工具:获取当前手机的联网方式。
来源:互联网 发布:mac彩妆深圳专柜地址 编辑:程序博客网 时间:2024/05/16 10:53
原文:http://www.cnblogs.com/meteoric_cry/p/4627075.html
一个小小的工具:获取当前手机的联网方式。好像原作者还处理了一些比较蛋疼的情况。
package cn.iautos.testapplication20170612;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.telephony.TelephonyManager;public class NetworkUtils { public static String getNetTypeName(Context context) { String strNetworkType = ""; NetworkInfo networkInfo = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) { if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { strNetworkType = "WIFI"; } else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) { String _strSubTypeName = networkInfo.getSubtypeName(); // TD-SCDMA networkType is 17 int networkType = networkInfo.getSubtype(); switch (networkType) { case TelephonyManager.NETWORK_TYPE_GPRS: case TelephonyManager.NETWORK_TYPE_EDGE: case TelephonyManager.NETWORK_TYPE_CDMA: case TelephonyManager.NETWORK_TYPE_1xRTT: case TelephonyManager.NETWORK_TYPE_IDEN: //api<8 : replace by 11 strNetworkType = "2G"; break; case TelephonyManager.NETWORK_TYPE_UMTS: case TelephonyManager.NETWORK_TYPE_EVDO_0: case TelephonyManager.NETWORK_TYPE_EVDO_A: case TelephonyManager.NETWORK_TYPE_HSDPA: case TelephonyManager.NETWORK_TYPE_HSUPA: case TelephonyManager.NETWORK_TYPE_HSPA: case TelephonyManager.NETWORK_TYPE_EVDO_B: //api<9 : replace by 14 case TelephonyManager.NETWORK_TYPE_EHRPD: //api<11 : replace by 12 case TelephonyManager.NETWORK_TYPE_HSPAP: //api<13 : replace by 15 strNetworkType = "3G"; break; case TelephonyManager.NETWORK_TYPE_LTE: //api<11 : replace by 13 strNetworkType = "4G"; break; default: // http://baike.baidu.com/item/TD-SCDMA 中国移动 联通 电信 三种3G制式 if (_strSubTypeName.equalsIgnoreCase("TD-SCDMA") || _strSubTypeName.equalsIgnoreCase("WCDMA") || _strSubTypeName.equalsIgnoreCase("CDMA2000")) { strNetworkType = "3G"; } else { strNetworkType = _strSubTypeName; } break; } } } else { strNetworkType = "无网络"; } return strNetworkType; }}
配合以下代码可以动态监听网络连接的变化:
原文:http://blog.csdn.net/qq_32368129/article/details/54406861
package cn.iautos.testapplication20170612;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.util.Log;import android.widget.Toast;public class NetworkConnectChangedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { /* if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {// 监听wifi的打开与关闭,与wifi的连接无关 int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0); Log.e("TAG", "wifiState:" + wifiState); switch (wifiState) { case WifiManager.WIFI_STATE_DISABLED: break; case WifiManager.WIFI_STATE_DISABLING: break; } } // 监听wifi的连接状态即是否连上了一个有效无线路由 if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) { Parcelable parcelableExtra = intent .getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); if (null != parcelableExtra) { // 获取联网状态的NetWorkInfo对象 NetworkInfo networkInfo = (NetworkInfo) parcelableExtra; //获取的State对象则代表着连接成功与否等状态 NetworkInfo.State state = networkInfo.getState(); //判断网络是否已经连接 boolean isConnected = state == NetworkInfo.State.CONNECTED; Log.e("TAG", "isConnected:" + isConnected); if (isConnected) { } else { } } }*/ // 监听网络连接,包括wifi和移动数据的打开和关闭,以及连接上可用的连接都会接到监听 if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) { String netTypeName = NetworkUtils.getNetTypeName(context); Toast.makeText(context, netTypeName, Toast.LENGTH_SHORT).show(); Log.e("网络检查demo", netTypeName); /* //获取联网状态的NetworkInfo对象 NetworkInfo info = intent .getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); if (info != null) { //如果当前的网络连接成功并且网络连接可用 if (NetworkInfo.State.CONNECTED == info.getState() && info.isAvailable()) { if (info.getType() == ConnectivityManager.TYPE_WIFI) { } else if (info.getType() == ConnectivityManager.TYPE_MOBILE) { } } else { } }*/ } }}
注释中的代码是监听不同情况。在这里未采用原文的监听方式,而是将两个demo结合起来。
阅读全文
0 0
- 一个小小的工具:获取当前手机的联网方式。
- 如何通过获取手机的联网方式列表
- 获取手机当前的联网状态2G/3G/4G/WIFI
- 获取手机当前的apn
- Android中 获取手机信息以及联网状态的一些工具类小结
- Android 获取手机图片保存的一个通用工具类
- 分享一个获取手机IP地址的工具类,
- 一个用来处理手机通讯录乱码的小小小小python程序
- Android 获取手机当前所在的经纬度
- GPS 定位获取 手机当前的位置
- iOS手机获取当前的IP
- Unity获取当前手机电量的方法
- 获取当前手机的IMEI串号
- Android 获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类
- Android 获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类
- Android 获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类
- Android 获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类
- 一个小小的烦恼
- 树莓派串口使用
- java inputstream toString使用介绍
- 调用SendMessage 产生死锁的问题分析
- Python学习笔记(一)
- 欢迎使用CSDN-markdown编辑器
- 一个小小的工具:获取当前手机的联网方式。
- ubuntu14.04使用ATI显卡,安装opencl并使用cgminer的方法(原创)
- 【View层】IOS纯代码绘制界面
- JavaScript 数组
- Fragment学习笔记(一)
- 针对获取手机上的一些特定信息的工具类
- DBoW2算法 精析
- oracle中多行比较运算符(in any all)的使用
- Kubernetes的Pod网络设置