Android JobScheduler - não é possível criar um trabalho persistente

Estou experimentando a nova API do JoScheduler que acompanha o Android Lollipop. Até agora, consegui criar e executar uma tarefa com um atraso de 6000 milissegundos sem requisitos de rede sem problemas.

No entanto, apenas tentei manter o mesmo trabalho usando a função setPersisted (true). Assim que a função job build () é chamada, ela falha ao dizer que preciso da permissão RECEIVED_BOOT_COMPLETED no arquivo Manifest.

Mas eu adicionei a permissão:

<?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" />

Até adicionei o código a seguir antes da adição do trabalho para ver se o aplicativo tem a permissão registrada:

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

No entanto, quando o trabalho é criado, recebo o seguinte erro:

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

Meu código para criar e adicionar o trabalho ao 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());

Minha declaração de manifesto JobService:

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

Então, eu estou me perguntando se estou fazendo outra coisa errada que alguém possa detectar. A única coisa que observarei, caso isso faça diferença, é que o código é executado em um IntentService, por isso estou pensando se esse pode ser um motivo pelo qual o JobScheduler não pode encontrar a permissão.

questionAnswers(5)

yourAnswerToTheQuestion