现在我正在使用 Firebase 上传照片,这工作得很好,并且能够重建这项工作以使用 workmanager,但我不知道如何将内容 URI 触发器传递给我的 workmanager 构建器。
val dispatcher = FirebaseJobDispatcher(GooglePlayDriver(applicationContext))
val job = dispatcher.newJobBuilder()
.setService(UploadJobService::class.java)
.setTag(TAG)
.setRecurring(true)
.setTrigger(Trigger.executionWindow(0, 60))
.setTrigger(Trigger.contentUriTrigger( Arrays.asList(
ObservedUri(Uri.parse(Environment.getExternalStorageDirectory().absolutePath), ObservedUri.Flags.FLAG_NOTIFY_FOR_DESCENDANTS))
))
.setLifetime(Lifetime.FOREVER)
.setReplaceCurrent(false)
.setConstraints(
Constraint.ON_UNMETERED_NETWORK
)
.build()
dispatcher.mustSchedule(job)
Run Code Online (Sandbox Code Playgroud)
这是我用于 workmanager 的代码,它大部分时间都可以工作,但是当我拍摄照片并删除它时,这不起作用,间隔 15 分钟,我如何注册新的唯一工人,当新照片是什么时将开始工作检测到?
编辑:这是我使用的代码及其工作,但不确定我是否正确实施...
这是调度工人的方法:
public static void Checkfornewphotos(String ONE_MY_WORK) {
OneTimeWorkRequest.Builder photoCheckBuilder =
new OneTimeWorkRequest.Builder(MyWorker.class);
photoCheckBuilder.setConstraints(new Constraints.Builder()
.addContentUriTrigger(MediaStore.Images.Media.INTERNAL_CONTENT_URI, true)
.addContentUriTrigger(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, true)
.build());
OneTimeWorkRequest Photocheck = photoCheckBuilder.build();
WorkManager instance = WorkManager.getInstance();
instance.enqueueUniqueWork(ONE_MY_WORK, ExistingWorkPolicy.REPLACE, Photocheck);
}
Run Code Online (Sandbox Code Playgroud)
这是我的工人:
public class MyWorker extends Worker {
public MyWorker(
@NonNull …Run Code Online (Sandbox Code Playgroud)