|
1 | 1 | package org.odk.collect.async |
2 | 2 |
|
| 3 | +import android.net.NetworkCapabilities |
| 4 | +import android.net.NetworkRequest |
3 | 5 | import androidx.work.Constraints |
4 | 6 | import androidx.work.Data |
5 | 7 | import androidx.work.ExistingPeriodicWorkPolicy |
@@ -57,14 +59,25 @@ class CoroutineAndWorkManagerScheduler( |
57 | 59 | inputData: Map<String, String>, |
58 | 60 | networkConstraint: Scheduler.NetworkType? |
59 | 61 | ) { |
60 | | - val constraintNetworkType = when (networkConstraint) { |
| 62 | + val networkRequest = NetworkRequest.Builder().apply { |
| 63 | + addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) |
| 64 | + |
| 65 | + when (networkConstraint) { |
| 66 | + Scheduler.NetworkType.WIFI -> addTransportType(NetworkCapabilities.TRANSPORT_WIFI) |
| 67 | + Scheduler.NetworkType.CELLULAR -> addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) |
| 68 | + else -> Unit |
| 69 | + } |
| 70 | + }.build() |
| 71 | + |
| 72 | + val networkType = when (networkConstraint) { |
61 | 73 | Scheduler.NetworkType.WIFI -> NetworkType.UNMETERED |
62 | 74 | Scheduler.NetworkType.CELLULAR -> NetworkType.METERED |
63 | 75 | else -> NetworkType.CONNECTED |
64 | 76 | } |
65 | 77 |
|
66 | | - val constraints = Constraints.Builder() |
67 | | - .setRequiredNetworkType(constraintNetworkType) |
| 78 | + val constraints = Constraints |
| 79 | + .Builder() |
| 80 | + .setRequiredNetworkRequest(networkRequest, networkType) |
68 | 81 | .build() |
69 | 82 |
|
70 | 83 | val workManagerInputData = Data.Builder() |
|
0 commit comments