2015-10-27 10 views
13

Ich habe versucht, einen einfachen JobScheduler Job zu erstellen, nur um zu sehen, wie es funktioniert. aber ich bekomme diese Ausnahme auf Runtime, ich kann es nicht herausfinden, wie ich die Guides Schritt für Schritt folgte.Android java.lang.IllegalArgumentException: Kein solcher Dienst ComponentInfo JobScheduler

Das ist mein Aufruf:

 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 nicht anderes tun, was dann erweitert Jobservice.

+0

JobScheduler wurde mit API-Level 21 hinzugefügt. Führen Sie Ihre App auf mindestens einem Android 5.0-Gerät aus? – Christopher

+0

das in API 21 eingeführt. Welche Version ist Ihr Android> –

+0

Ich verwende Android 6 (API 23) –

Antwort

27

Sie benötigen die Erlaubnis android.permission.BIND_JOB_SERVICE in AndroidManifest.xml

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

+0

Ja gut, das scheint die Ursache für die meisten solcher Fehler zu sein. Ich hatte den gleichen Fehler und es wurde nur gelöst, indem die Erlaubnis für den Dienst wie oben gesetzt wurde. – larrytech

0

Hast du in einem offenkundigen zusätzlichen Service hinzufügen? es heißt, Sie haben Ihren Dienst nicht in Manifest

0

erklärt Mein Problem war, dass mein Service als eine statische innere Klasse definiert wurde. Das Problem löste sich selbst, nachdem ich die Serviceklasse in die eigene Java-Datei

+2

Nein, Sie können Services auch als statische innere Klassen haben: '

0

verschoben habe. Es war mein Fall.

Verwandte Themen