android - 检查互联网是否可用(targetSdk:Android Q)
问题描述
我希望isInternetAvailable
在我的项目中实现一个简单的方法,它根据调用时互联网(任何网络)是否可用返回真或假。
不幸getActiveNetworkInfo
的是,自 21 起已弃用,并且getActiveNetwork
需要最低 API 级别 23(我的是 21)。
我已经阅读过NetworkCallback
,但这似乎是在通知网络变化,我需要一种方法来判断网络现在是否可用。
解决方案
像这样使用NetworkCapabilities
:
fun isNetworkAvailable(): Boolean {
return connectivityManager.run {
getNetworkCapabilities(activeNetwork)?.run {
when {
hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
else -> false
}
} ?: false
}
}
推荐阅读
- javascript - 尝试在 useEffect 中使用 useState 时出现 TypeError:movieDetails.map 不是函数
- python - 更改一个处理程序的日志记录格式会更改所有处理程序
- oracle - FATAL DBT-10317 指定的 SID 名称已存在
- angular - 如何从 mat-date-picker 和 mat select with time 中获取日期?
- python - 从字典列表创建嵌套列表
- memory - 通过 git 创建容器给我们一个错误组限制:无法确定 cgroup 限制:打开 /sys/fs/cgroup/memory/memory.limit_in_bytes
- java - 如何检查请求的 TLS 版本
- database - 如何根据 Laravel 现有数据库中“login_at”列的月份输入填充表列
- phpmailer - 根据输入字段自动添加附件
- python - Python valueerror: too many values to unpack (expected 2) 解决方法