81 votes

Impossible de démarrer le Service de l'Intention

J'ai une classe de service. J'ai exporté cette classe de pot et j'ai intégrer le pot dans mon application client.

Si nécessaire, je l'appelle la classe de service. Quand j'essaie de faire ceci, j'obtiens l'erreur suivante:

Impossible de démarrer le service Intention {comp={com.de l'échantillon.service/com.de l'échantillon.service.serviceClass}} : pas trouvé

J'ai d'autres de la classe en dehors de la classe de service, je suis en mesure d'accéder (créer un objet de cette classe) qui sont dans le même pot.

J'ai l'impression d'avoir raté quelque chose dans ma configuration, ou manifester.

Merci de m'aider à l'identification de la même. Mon code est ci-dessous:

public void onCreate(Bundle savedInstanceState) {    
      super.onCreate(savedInstanceState);  
      Intent intent = new Intent () ;  
      intent.setClassName("com.sample.service" ,"com.sample.service.serviceClass") ;  
      this.startService(intent) ; // when I call this line I get the message...  
      // binding other process continue  here   
}

Client manifest.xml

<service android:name="com.sample.service.serviceClass"  
            android:exported="true" android:label="@string/app_name" 
            android:process=":remote">
   <intent-filter><action android:name="com.sample.service.serviceClass"></action>
   </intent-filter>
</service>

Merci d'avance,
Vinay

72voto

Blundell Points 28342

Pour quelqu'un d'autre de venir à travers ce fil, j'ai eu ce problème et tirait mes cheveux. J'ai eu la déclaration de service à l'EXTÉRIEUR de l' '< application>' balise de fin DUH!

DROIT:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  ...>
...
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity ...>
        ...
    </activity>    

    <service android:name=".Service"/>

    <receiver android:name=".Receiver">
        <intent-filter>
            ...
        </intent-filter>
    </receiver>        
</application>

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

Le MAL, mais encore compile sans erreurs:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  ...>
...
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity ...>
        ...
    </activity>

</application>

    <service android:name=".Service"/>

    <receiver android:name=".Receiver">
        <intent-filter>
            ...
        </intent-filter>
    </receiver>        

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

49voto

CommonsWare Points 402670

Tout d'abord, vous n'avez pas besoin d' android:process=":remote", donc merci de le supprimer, car tout cela va faire est de prendre la RAM supplémentaire pour aucun avantage.

Deuxièmement, depuis l' <service> élément contient une chaîne d'action, de l'utiliser:

public void onCreate(Bundle savedInstanceState) {    
      super.onCreate(savedInstanceState);  
      Intent intent=new Intent("com.sample.service.serviceClass");  
      this.startService(intent);
}

32voto

Jianhong Points 699

1) vérifiez si le service de déclaration dans le manifeste est imbriquée dans la balise application

<application>
<service android:name="" />
</application>

2) vérifiez si votre service.java est dans le même emballage ou diff package que l'activité

<application>
<service android:name="com.package.helper.service" /> <!-- service.java exists in diff package -->
</application>

<application>
<service android:name=".service" /> <!-- service.java exists in same package -->
</application>

5voto

sataniccrow Points 363

J'espère que je peux aider quelqu'un avec cette info: J'ai déménagé ma classe de service dans un autre paquet, et je fixe les références. Le projet a été parfaitement bien, MAIS la classe de service n'a pas pu être trouvé par l'activité.

En regardant le journal dans le logcat j'ai remarqué que l'avertissement sur la question: l'activité peut pas trouver la classe de service, mais le plus drôle est que le package est incorrect, il contient un "/" char. Le compilateur a été à la recherche pour

com.quelque chose./service.MyService

au lieu de

com.quelque chose.service.MyService

J'ai déménagé de la classe de service de l'emballage et à l'arrière et tout a très bien fonctionné.

0voto

marisxanis Points 57

J'ai trouvé le même problème. J'ai perdu presque une journée pour démarrer un service de OnClickListener de la méthode à l'extérieur de la onCreate et après le 1er jour, j'ai encore raté!!!!très frustrant! J'étais à la recherche, à l'exemple de exemple "RemoteServiceController". Il fonctionne sur ma mise en œuvre, non!

Le seul moyen c'était de travailler pour moi , était de l'intérieur de méthode onCreate. Non de les autres variantes travaillé et crois-moi, j'ai tout essayé. Conclusion: - si vous mettez votre classe de service dans différents paquet que le mainActivity, je vais les faire toutes sortes d'erreurs aussi un "/" - ne pouvais pas trouver le chemin d'accès au service, essayé de départ avec l'Intention(paquet,className) et de rien , aussi d'autres type de l'Intention de départ

  • J'ai déplacé la classe de service dans le même package de l'activité Forme finale des travaux, espérons - nous, aide à quelqu'un, c'est que le listerners onClick j'ai deffined eux à l'intérieur de la méthode onCreate comme ceci:

    onCreate () //un peu de code...... Bouton btnStartSrv = (Button)findViewById(R. id.btnStartService); Bouton btnStopSrv = (Button)findViewById(R. id.btnStopService);

        btnStartSrv.setOnClickListener(new OnClickListener() {
                    public void onClick(View v) {
                        startService(new Intent("RM_SRV_AIDL"));
                    }
    
                });
    

    btnStopSrv.setOnClickListener(new OnClickListener() { public void onClick(View v) { stopService(new Intent("RM_SRV_AIDL")); }

    });

    } // fin de la onCreate

Également très important le fichier de Manifeste,assurez-vous que le service est enfant de la demande:

<application ...
  <activity
     ...
   </activity>

      **<service
      android:name="com.mainActivity.MyRemoteGPSService"
      android:label="GPSService"
      android:process=":remote"
    >
          <intent-filter>
                   <action android:name="RM_SRV_AIDL" />
              </intent-filter>
    </service>**  


/application>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X