JobService不需要android.permission.BIND_JOB_SERVICE权限。

43

我在调度JobService时遇到错误,提示“不需要 android.permission.BIND_JOB_SERVICE 权限”,但我已经拥有绑定权限。以下是我的代码。

JobScheduler jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
ComponentName componentName = new ComponentName(MainActivity.this,MyJobService.class);
JobInfo.Builder jobInfo = new JobInfo.Builder(101, componentName).setPeriodic(2000);
jobScheduler.schedule(jobInfo.build())

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

错误:

java.lang.IllegalArgumentException: 计划服务 ComponentInfo{services.acadglid.com.acadgildservices/services.com.es.MyJobService} 不需要android.permission.BIND_JOB_SERVICE权限


你尝试过从清单文件中的 service 中删除 android:permission="android:permission.BIND_JOB_SERVICE" 吗? - LS_
@Signo 是的,但是仍然收到相同的错误。 - Akhilesh Mani
3
请将 android:permission="android:permission.BIND_JOB_SERVICE" 更改为 android:permission="android.permission.BIND_JOB_SERVICE" - Nazmul Haque
@NazmulHaque 这两者之间有什么区别? - Akhilesh Mani
6
我认为在权限字符串中应使用 . 而不是 :。@AkhileshMani - Nazmul Haque
2
@NazmulHaque 谢谢!这是我的一个愚蠢的错误。 - Akhilesh Mani
2个回答

72

解决此问题:

预定的服务 ComponentInfo{.........} 不需要 android.permission.BIND_JOB_SERVICE 权限

添加权限:

        android:permission="android.permission.BIND_JOB_SERVICE"

但需要这个属性:

android:exported="..."

android:exported: 指示广播接收器是否可以从其应用程序之外的来源接收消息。如果可以,则为 "true",否则为 "false"。

例如:

    <service android:name="com.jorgesys.jobscheduler.MyService"
        android:permission="android.permission.BIND_JOB_SERVICE"
        android:exported="true"/>

6
这对我非常有效!我将以下服务添加到我的AndroidManifest.xml文件中:<service android:name=".service.BluetoothService" android:permission="android.permission.BIND_JOB_SERVICE" android:exported="true"/> - Martin Erlic
@Elenasys 过去,我的警报通知正确触发且没有应用程序崩溃。然后应用程序开始崩溃,并出现与上述问题中相同的Logcat错误消息。我添加了您建议的权限,不再出现崩溃。操作系统有什么变化吗?现在触发警报通知需要该权限吗? - AJW
这在我的情况下不起作用,我正在使用工作意图服务。 - Abdul Waheed

12

你的 Android Manifest 中有一个拼写错误。

只需要更改以下行:

android:permission="android:permission.BIND_JOB_SERVICE"
                           ^
                           |
                    This " : " is WRONG!

android:permission="android.permission.BIND_JOB_SERVICE"

所以只需将冒号:更改为句点.即可。


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