fun isNetworkConnectionAvailable()

in azure-communication-ui/calling/src/main/java/com/azure/android/communication/ui/calling/presentation/manager/NetworkManager.kt [13:36]


    fun isNetworkConnectionAvailable(): Boolean {
        val connectivityManager =
            context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            val capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)

            if (capabilities != null) {
                return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) ||
                    capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
                    capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)
            }
        } else {
            val networkInfo = connectivityManager.activeNetworkInfo
            networkInfo ?: return false
            return networkInfo.isConnected && (
                networkInfo.type == ConnectivityManager.TYPE_WIFI ||
                    networkInfo.type == ConnectivityManager.TYPE_MOBILE
                ) ||
                networkInfo.type == ConnectivityManager.TYPE_ETHERNET
        }

        return false
    }