Android网络状态获取类 在api 29中 NetworkInfo Deprecated

Android 编译sdk版本为29时,NetworkInfo 过时了,去Android官网查到以下结果

Android网络状态获取类 在api 29中 NetworkInfo Deprecated_第1张图片

 

版本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)