【问题标题】:Android java.lang.IllegalArgumentException: No such service ComponentInfo JobSchedulerAndroid java.lang.IllegalArgumentException:没有这样的服务 ComponentInfo JobScheduler
【发布时间】:2015-10-27 09:27:02
【问题描述】:

我试图创建一个简单的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 级别 21。您是否至少在 Android 5.0 设备上运行您的应用程序?
  • API 21中引入的。你的android是什么版本>
  • 我使用的是 Android 6 (API 23)
  • 你的设备也是Android 6?
  • 您是否在清单文件中声明了服务TestService

标签: android android-jobscheduler


【解决方案1】:

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

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

【讨论】:

  • 是的,这似乎是大多数此类错误的原因。我遇到了同样的错误,只需像上面那样设置服务权限即可解决。
  • 即使在 AndroidManifest 中添加异常后,仍会出现相同的异常
  • android:exported="true" 。这也能有效果吗?
  • @petryk33 我面临同样的问题。你找到解决办法了吗?
  • @Napolean 您找到问题的答案了吗?
【解决方案2】:

尝试干净的项目。这是我的情况。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 不,您也可以将服务作为静态内部类:&lt;service android:name=".MainActivity$TestService" ...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 2014-03-31
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多