android - Android WorkRequest NetworkType 约束无法区分带互联网和不带互联网的 VPN
问题描述
我有一个WorkRequest
我想在设备有互联网连接时运行的。约束似乎是做到这一点的方法——我可以NetworkType
像这样定义一个约束:
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
但是,我观察到使用 VPN 的设备的一些行为。当 VPN 处于活动状态时,即使设备没有Internet连接,它似乎也会将其WorkRequest
视为。NetworkType.CONNECTED
有什么方法可以使约束按我的预期工作吗?
提前致谢 :)
解决方案
请首先检查 VPN 具有哪些网络功能:
通过 android.net.NetworkCapabilities 上网检查不工作
然后和这个比较:
互联网&NOT_RESTRICTED&TRUSTED&VALIDATED
这就是NetworkType.CONNECTED的意思。
如果您愿意,您可以转储 JS 并查看您正在等待的确切功能,如下所示:
adb shell dumpsys 作业调度程序
https://developer.android.com/topic/libraries/architecture/workmanager/how-to/debugging
推荐阅读
- python - 如何旋转数据框以使列标签成为数据框中的元素
- c - 缓冲区溢出示例?
- javascript - 连续播放播放列表中的歌曲
- javascript - Android 浏览器中的多行自动化 Javascript
- mps - JetBrains MPS 只是为了创建突出显示?
- amazon-web-services - 使用 AWS API 将文件的 url 发送到 Lambda,以便可以获取并存储在 S3 中?
- jsonschema - jsonschema 验证:特定字段的值应限制为在另一个字段中输入的值
- python - 使用 Python 获取令牌 JSON (json.decoder.JSONDecodeError: Expecting value: line 3 column 1 )
- css - 如何在图像 React-Native 上添加内阴影
- python - 通过接受用户输入以粗体显示 Python 格式的邮件正文