Android网络状态获取类 在api 29中 NetworkInfo Deprecated
16lz
2021-12-04
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,以上。
更多相关文章
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- python起点网月票榜字体反爬案例
- Android(安卓)中数据库查询方法 query() 中的 select
- Android(安卓)数据绑定视图 dataBinding
- Android(安卓)关于获取摄像头帧数据
- ionic android升级错误 exposed beyond app through Intent.getD
- [置顶] android orm映射框架(类似hibernate)基本使用
- Android中使用Gson解析JSON数据
- Android(安卓)设置没有 actionBar的 样式