将目标sdk更新为29后导入不建议使用的警告

问题描述 投票:0回答:1

在更新编译后,在targetSdkVersion中将build.gradle设置为“ 29” 我收到弃用警告:

warning: [deprecation] NetworkInfo in android.net has been deprecated
import android.net.NetworkInfo;
                  ^

因此构建失败。但是我使用网络信息来与api版本26-29兼容。我应该如何处理针对api“ 29”及更高版本的过时导入?

java android deprecated
1个回答
0
投票

您的问题的答案在此 Link中!

NetworkCapabilities在API 29中不被弃用,但是它需要API 21,因此我仅在API 29上调用过它。

public static boolean isNetworkAvailable(Context context) {
if(context == null)  return false;


ConnectivityManager connectivityManager = (ConnectivityManager) 

context.getSystemService(Context.CONNECTIVITY_SERVICE);

    if (connectivityManager != null) {


    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            NetworkCapabilities capabilities = 

 connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
            if (capabilities != null) {
                if 
                (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                    return true;
                } else if 
                 (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
                    return true;
                }  else if 
                 (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)){
                    return true;
                }
            }
        }

    else {

        try {
            NetworkInfo activeNetworkInfo = 
               connectivityManager.getActiveNetworkInfo();
            if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
                Log.i("update_statut", "Network is available : true");
                return true;
            }
        } catch (Exception e) {
            Log.i("update_statut", "" + e.getMessage());
        }
    }
}
    Log.i("update_statut","Network is available : FALSE ");
    return false;
}
© www.soinside.com 2019 - 2024. All rights reserved.