在android的WorkManager上添加对本地wifi连接约束的检查

问题描述 投票:0回答:2

在我当前针对工作人员Constraints的实现中,我正在使用以下配置。

 Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED)
                .setRequiresBatteryNotLow(true).build()

[我发现通过此Constraints,Worker仅在网络具有Internet连接的情况下才能工作,但我希望即使没有互联网且设备已连接至wifi的约束也可以工作。

因此,可能是添加仅网络约束而不是Internet的方法。

android constraints android-workmanager
2个回答
0
投票

您可以查看NetworkType的可用选项。这里的主要问题是,在较新的OS版本上,该设备要求在使用Wi-Fi SSID之前将其连接到Internet。

[如果您已将设备设置为即使没有互联网连接也可以连接到Wi-Fi,则可以测试其他选项之一(NetworkType。]


0
投票

没有开箱即用的NetworkType.UNMETERED,所以我建议您手动进行此检查。

您可以触发工作人员,并首先检查一下:

Constraint

val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager? connectivityManager?.activeNetwork?.let { activeNetwork -> val capabilities = connectivityManager.getNetworkCapabilities(activeNetwork) val connectedToWifi = capabilities?.hasCapability(NetworkCapabilities.TRANSPORT_WIFI) } 应该是您要寻找的内容(虽然不确定,最好再次检查所有选项)。

如果NetworkCapabilities.TRANSPORT_WIFIconnectedToWifi,则可以执行操作,否则,只需结束工作人员返回的结果即可更好地满足您的需要(您可以返回true,以便所有结果都在此处结束;如果需要,可以返回Success工作人员会在一段时间后自动重试)

© www.soinside.com 2019 - 2024. All rights reserved.