小编Mar*_*221的帖子

如何使用工作管理器检测新照片

现在我正在使用 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)

android kotlin android-workmanager

5
推荐指数
1
解决办法
1197
查看次数

标签 统计

android ×1

android-workmanager ×1

kotlin ×1