Android JobScheduler - не удается создать постоянную работу

Я испытываю новый API JoScheduler, который поставляется с Android Lollipop. До сих пор мне удалось успешно создать и выполнить задание с задержкой 6000 миллисекунд без каких-либо требований к сети без проблем.

Тем не менее, я только что попытался сохранить ту же работу с помощью функции setPersisted (true). Как только вызывается функция job build (), она перестает говорить, что мне нужно разрешение RECEIVED_BOOT_COMPLETED в файле манифеста.

Но я добавил разрешение:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  package="com.android" >

  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

Я даже добавил следующий код перед тем, как добавить работу, чтобы проверить, зарегистрировано ли у приложения разрешение:

PackageManager pm = context.getPackageManager();
int hasPerm = pm.checkPermission(Permission.RECEIVE_BOOT_COMPLETED, 
context.getPackageName());
if (hasPerm == PackageManager.PERMISSION_GRANTED)
{
   // Goes into here every time
}

Однако, когда работа построена, я получаю следующую ошибку:

java.lang.IllegalArgumentException: Error: requested job be persisted without holding RECEIVE_BOOT_COMPLETED permission.

Мой код для создания и добавления работы в JobSchedular:

ComponentName serviceComponent = new ComponentName(getApplicationContext(), MyJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(1, serviceComponent)
        .setMinimumLatency(6000)
        .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
        .setPersisted(true);
JobScheduler jobScheduler = (JobScheduler) getApplicationContext().getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());

Моя декларация JobService:

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

Поэтому мне интересно, делаю ли я что-то еще неправильно, что кто-нибудь может заметить. Единственное, что я отмечу, если это действительно имеет значение, это то, что код запускается в IntentService, поэтому мне интересно, может ли это быть причиной, почему JobScheduler не может найти разрешение.

Ответы на вопрос(5)

Ваш ответ на вопрос