Android网络状态获取类 在api 29中 NetworkInfo Deprecated
16lz
2021-01-23
Android 编译sdk版本为29时,NetworkInfo 过时了,去Android官网查到以下结果
版本29以前的写法如下:
public static boolean networkConnected(Context context) { if (context != null) { ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mWiFiNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); if (mWiFiNetworkInfo != null) { if (mWiFiNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {//WIFI return true; } else if (mWiFiNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {//移动数据 return true; } } } return false; }
如果使用编译版本29及以上的话请改成如下:
public static boolean networkConnected(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (context != null) { if(Build.VERSION.SDK_INT<23){ NetworkInfo mWiFiNetworkInfo = cm.getActiveNetworkInfo(); if (mWiFiNetworkInfo != null) { if (mWiFiNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {//WIFI return true; } else if (mWiFiNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {//移动数据 return true; } } }else{ Network network =cm.getActiveNetwork(); if(network!=null){ NetworkCapabilities nc=cm.getNetworkCapabilities(network); if(nc!=null){ if(nc.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){//WIFI return true; }else if(nc.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){//移动数据 return true; } } } } } return false; }
主要是做了版本判断,然后为什么是23呢, 因为getActiveNetwork 这个方法最低使用api是23,以上。
更多相关文章
- Android 数据绑定视图 dataBinding
- Android 中数据库查询方法 query() 中的 select
- Android 关于获取摄像头帧数据
- Android中使用Gson解析JSON数据
- 安卓9.0 http请求数据失败解决办法
- 待机后,android中activity的数据丢失问题解决
- 修改系统Android版本,版本号
- Android SDK版本更新
- Android 封装json数据