Android中 java.lang.IllegalArgumentException: No such service ComponentInfo JobScheduler 意为找不到 ComponentInfo JobScheduler 服务的异常。

21

我试着创建一个简单的JobScheduler工作,只是为了看看它的工作原理。但是在运行时我一直收到这个异常,我无法弄清楚问题所在,因为我已经按照指南逐步操作。

这是我的调用:

ComponentName componentName = new ComponentName(getApplicationContext(), TestService.class);

JobInfo jobInfo = new JobInfo.Builder(1,componentName).setPeriodic(300000)
                .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).build();

JobScheduler tm = (JobScheduler)getApplicationContext().getSystemService(Context.JOB_SCHEDULER_SERVICE);

tm.schedule(jobInfo);

TestService只是继承了JobService,除此之外没有任何其他功能。


JobScheduler是在API-Level 21中添加的。您的应用程序是否在至少Android 5.0设备上运行? - Christopher
我正在使用Android 6(API 23) - Roee N
你的设备也是安卓6吗? - Christopher
我的设备是Android 6(API 23),编译SDK是API 21。 - Roee N
4
你在清单文件中声明了 TestService 服务吗? - frogatto
显示剩余2条评论
3个回答

65

您需要将 android.permission.BIND_JOB_SERVICE 权限添加到您的 AndroidManifest.xml 文件中。

...
<service android:name=".TestService"
     android:permission="android.permission.BIND_JOB_SERVICE"
     android:exported="true"/>
...
</application>


是的,很好,这似乎是大多数此类错误的原因。我也遇到了同样的错误,只需像上面那样设置服务的权限即可解决。 - Akah
1
即使在AndroidManifest中添加了相应内容,仍然持续出现相同的异常。 - petryk33
android:exported="true"。这个设置是否也会产生影响? - Napolean
@petryk33 我也遇到了同样的问题。你找到任何解决方案了吗? - Chirag Mittal
三年后...它有帮助吗? - Marian Paździoch
显示剩余2条评论

2
尝试清理项目。这是我的情况。

-1

我的问题是我的Service被定义为一个静态内部类。当我将Service类移动到它自己的Java文件中,问题就解决了。


3
不,您也可以将服务定义为静态内部类:<service android:name=".MainActivity$TestService" ... - Alexander Farber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接