6 android android-jetpack-compose
我想获取网络状态意味着连接的网络是否在 Jetpack Compose 中具有互联网连接。如何实现
如果您遇到了被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
}
Run Code Online (Sandbox Code Playgroud)
我从另一个问题的已接受答案中得到了答案。请随意查看:activeNetworkInfo 已弃用
使用 JC 时,使用它来访问上下文:
val context = LocalContext.current
Run Code Online (Sandbox Code Playgroud)
val connectivityManager
= getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetworkInfo = connectivityManager.getActiveNetworkInfo()
Text(
if(
activeNetworkInfo != null && activeNetworkInfo.isConnected()
) "Connected"
else "Disconnected"
)
Run Code Online (Sandbox Code Playgroud)
这是一个显示网络状态的可组合项。正如上面评论中正确指出的那样,JC 更关注 UI,因此所有其余的东西仍然是相同的旧 Android 方式。JC 只是提高了(?)GUI 开发的效率
| 归档时间: |
|
| 查看次数: |
6322 次 |
| 最近记录: |