不推荐使用activeNetworkInfo的Getter,不推荐使用Java

时间:2020-03-27 06:26:44

标签: java android kotlin

activeNetworkInfo的字母已弃用,在Java中已弃用。该如何解决?

我在下面使用了代码,但是android studio告诉我'activeNetworkInfo'已过时。

申请清单:

minSdkVersion 21
targetSdkVersion 29

CREATE PROCEDURE [dbo].[GetStudents]
    @id int = 0,
    @name varchar(50),
    @date  //date here accepts list of datetime?

2 个答案:

答案 0 :(得分:0)

使用此功能,

@RequiresApi(Build.VERSION_CODES.M)
    fun provideIsNetworkAvailable(application: Application): Boolean{
        private val applicationContext = application.applicationContext
        val connectivityManager = applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val activeNetwork = connectivityManager.activeNetwork

        connectivityManager.getNetworkCapabilities(activeNetwork).also {
            return it!= null && it.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
        }
    }

答案 1 :(得分:0)

我正在使用此代码:

private fun isInternetAvailable(context: Context): Boolean {
        var result = false
        val connectivityManager =
            context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            val networkCapabilities = connectivityManager.activeNetwork ?: return false
            val actNw =
                connectivityManager.getNetworkCapabilities(networkCapabilities) ?: return false
            result = when {
                actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
                actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
                actNw.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
                else -> false
            }
        } else {
            connectivityManager.run {
                connectivityManager.activeNetworkInfo?.run {
                    result = when (type) {
                        ConnectivityManager.TYPE_WIFI -> true
                        ConnectivityManager.TYPE_MOBILE -> true
                        ConnectivityManager.TYPE_ETHERNET -> true
                        else -> false
                    }

                }
            }
        }

        return result
    }

您可以查看下面的地址以获取详细信息。

activeNetworkInfo.type is deprecated in API level 28