计划文件更改通知作业

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

我想在特定文件更改时收到通知。我一直在研究FileObserver,但是在阅读了this thread中的答案之后,我尝试使用JobScheduler完成我的目标,当文件更改时,应该使用addTriggerContentUri()来运行作业。

我首先从文档页面复制示例,将应触发作业的addTriggerContentUri()更改为Uri。不幸的是,尽管Uri.fromFile(File(<path-to-file>))返回成功,但从未调用过我的onStartJob()方法。

现在,我想知道我是否做错了什么,或者我的解释中是否存在一般性缺陷,也许根本不可能在普通文件更改时触发工作?

我的类/代码的精简版看起来像这样(科特琳):

JobScheduler::schedule()

当然,class FilechangeService : JobService() { companion object { private const val JOB_ID = 0 // Schedule this job, replace any existing one. fun scheduleJob(context: Context) { // JobInfo Builder to construct the Job val builder = JobInfo.Builder( JOB_ID, ComponentName(context, FilechangeService::class.java) ) // Look for changes to specific file val uri = Uri.fromFile(File(<path-to-file>)) builder.addTriggerContentUri( JobInfo.TriggerContentUri(uri, 0) ) val jobInfo = builder.build() val js = context.getSystemService(JobScheduler::class.java) val status = js.schedule(jobInfo) } } override fun onStartJob(params : JobParameters) : Boolean { // Code that is never executed =( return false } } 是从应用程序的另一部分调用的。此外,我已经通过FilechangeService::scheduleJob()将服务添加到了AndroidManifest.xml中。

提前感谢您的帮助!

我想在特定文件更改时收到通知。我一直在研究FileObserver,但是在阅读了该线程的答案之后,我尝试使用JobScheduler完成目标,该目标应该是...

android android-jobscheduler android-background
1个回答
0
投票

总结一下评论中所说的话,似乎不可能做到我试图实现的目标。这是由于android:permission="android.permission.BIND_JOB_SERVICE"必须是“内容Uri”,因此“文件Uri”似乎无效。

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