Java 如果我在kotlin中实现如下的网络检查,会出现什么情况?

Java 如果我在kotlin中实现如下的网络检查,会出现什么情况?,java,android,networking,kotlin,Java,Android,Networking,Kotlin,在进行API调用之前,我试图检查我的Internet可用性。但是我发现有些方法被弃用了,所以我自己找到了一个解决方案,效果很好。但需要知道它的长期使用 fun isNetworkAvailable(context: Context): Boolean { var isNetwork: Boolean = false val connectivityManager = context .getSystemService(Context.CON

在进行API调用之前,我试图检查我的Internet可用性。但是我发现有些方法被弃用了,所以我自己找到了一个解决方案,效果很好。但需要知道它的长期使用

fun isNetworkAvailable(context: Context): Boolean {
        var isNetwork: Boolean = false
        val connectivityManager = context
            .getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val activeNetwork = connectivityManager.activeNetwork

        if (activeNetwork == null) {
            isNetwork = false
            Toast.makeText(context, "What can we do to that ?", Toast.LENGTH_SHORT).show()
            //Here we can show no network screen
        } else {
            isNetwork = true
        }

        return isNetwork
    }
如果设备未连接到internet,
activeNetwork
将变为空。这是一种正确的实施方式吗?需要你的专业知识

试试这个:


    fun isInternetConnected(context: Context): Boolean {
        return try {
            val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
            return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                val network = connectivityManager.activeNetwork
                val capabilities = connectivityManager.getNetworkCapabilities(network)
                capabilities != null &&
                        (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR))
            } else {
                (context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager).activeNetworkInfo?.isConnected == true
            }
        } catch (e: Exception) {
            e.printStackTrace()
            false
        }
    }

这里还显示了一个不推荐使用的方法<代码>activeNetworkInfo的获取程序:NetworkInfo!不推荐使用。在java中已弃用我担心这些方法。这种不推荐的方法只适用于运行低于Marshmello的Android版本的设备。这就是为什么我将其置于if-else条件下。那么使用这种方法可以吗?对我的实现有什么看法,为什么它不是一个理想的方式?