2015-10-27 12 views
13

Ho cercato di creare un lavoro semplice di JobScheduler solo per vedere come funziona. ma continuo a ricevere questa eccezione su Runtime, non riesco a capirlo perché ho seguito le guide passo dopo passo.Android java.lang.IllegalArgumentException: Nessun servizio di questo tipo ComponentInfo JobScheduler

Questo è il mio invito:

 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 non fa nulla altro allora si estende JobService.

+0

JobScheduler è stato aggiunto con livello API 21. Stai eseguendo l'app su almeno un dispositivo Android 5.0? – Christopher

+0

introdotto nell'API 21. quale versione è il tuo android> –

+0

Sto usando Android 6 (API 23) –

risposta

27

È necessario aggiungere l'autorizzazione android.permission.BIND_JOB_SERVICE nella vostra AndroidManifest.xml

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

+0

Sì, questa sembra essere la causa della maggior parte di tali errori. Ho avuto lo stesso errore ed è stato risolto solo impostando il permesso sul servizio come sopra. – larrytech

0

Forse si è aggiunto il servizio in palese? Dicendo che non hai dichiarato il tuo servizio in manifest

0

Il mio problema era che il mio servizio era definito come una classe interna statica. Il problema si è risolto da solo dopo aver spostato la classe di servizio nel proprio file Java

+2

No, puoi avere anche servizi come classi interne statiche: '

0

Provare a pulire il progetto. Era il mio caso.

Problemi correlati