[英]Network State with Jetpack compose
我想獲取網絡狀態意味着連接的網絡在 Jetpack Compose 中是否有互聯網連接。 如何實現
val connectivityManager
= getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetworkInfo = connectivityManager.getActiveNetworkInfo()
Text(
if(
activeNetworkInfo != null && activeNetworkInfo.isConnected()
) "Connected"
else "Disconnected"
)
這是一個 Composable,它顯示網絡的狀態。 正如上面評論中正確指出的那樣,JC 更專注於 UI,因此所有其他內容仍然是相同的舊 Android 方式。 JC 只是提高了(?)GUI 開發的效率
如果您遇到了connectivityManager.activeNetworkInfo
被棄用的問題,請嘗試使用:
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
使用 JC 時,使用它來訪問上下文:
val context = LocalContext.current
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.