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.
Cas de besoin, j'appelle la classe de service. Quand j'essaie de faire ceci, j'obtiens l'erreur suivante:
Unable to start service Intent {comp={com.sample.service/com.sample.service.serviceClass}} : not found
J'ai d'autres de la classe en dehors de la classe de service, que je suis en mesure d'accéder (créer un objet de cette classe) qui sont à l'intérieur de la même bocal.
J'ai l'impression d'avoir raté quelque chose dans ma configuration ou manifeste ou si.
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
- J'ai essayé de corriger votre code, mais dans la source il y a des questions que je sentais que je ne comprends pas assez pour le tenter. Fondamentalement, vous avez un espace supplémentaire dans < service ...>, il faut <service ...>, mais si vous regardez le code source, vous avez un " / " avant que les deux déclarations d'importation et je ne suis pas certain si elles sont censées y être. Je pense que les espaces après le '<' sera la cause de votre problème.
- Merci james pour la réponse. Ces espaces sont donné intentionnellement seulement à afficher dans le site. À l'intérieur du code, il n'y a pas d'espaces dans les balises. Même le "\" est seulement pour corriger l'affichage sur le site.. en gros, je ne reçois pas toutes les erreurs de compilation dans eclipse. Seulement sur l'exécution, je reçois le message dans le LogCat
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous n'avez pas besoin
android:process=":remote"
, donc merci de le supprimer, car tout cela va faire est de prendre la RAM supplémentaire pour aucun avantage.Deuxième, depuis le
<service>
élément contient une chaîne d'action, l'utiliser:android:process=":remote"
, donc merci de le supprimer, car tout cela va faire est de prendre la RAM supplémentaire pour aucun avantage. Un service distant est celui qui offre une API via AIDL et n'a rien à voir avec laandroid:process
attribut. Voici un exemple de service à distance: github.com/commonsguy/cw-advandroid/tree/master/AdvServices/... et ici est un client de ce service: github.com/commonsguy/cw-advandroid/tree/master/AdvServices/...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 la '< application>' balise de fin DUH!
DROITE:
MAL, mais encore compile sans erreurs:
1) vérifiez si le service de déclaration dans le manifeste est imbriquée dans la balise application
2) vérifiez si votre
service.java
est dans le même emballage ou diff package que l'activitéJ'espère que je peux aider quelqu'un avec cette info ainsi:
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
au lieu de
J'ai déménagé de la classe de service de l'emballage et à l'arrière et tout a très bien fonctionné.
Dans mon cas, le 1 MO maximum de la pac pour le transport des données par l'Intention.
Je vais juste utiliser le Cache ou de Stockage.
J'ai trouvé le même problème. J'ai perdu une journée à essayer de démarrer un service de
OnClickListener
de la méthode à l'extérieur de laonCreate
et après le 1er jour, j'ai encore raté!!!! Très frustrant!J'étais à la recherche, à l'exemple de exemple
RemoteServiceController
. Leurs œuvres, mais mon application ne fonctionne pas!Le seul moyen qui a été travaillé pour moi, était de l'intérieur
onCreate
méthode. Aucun des autres variantes travaillé et croyez-moi je les ai tous essayés.Conclusion:
Aussi un "/" n'a pas pu trouver le chemin d'accès au service, essayé de départ avec
Intent(package,className)
et de rien , aussi d'autres type d'Intention de départJ'ai déplacé la classe de service dans le même package de l'activité
Forme finale des travaux
J'espère que cela aide quelqu'un en définissant la listerners
onClick
à l'intérieur de laonCreate
méthode comme ceci:Également très important pour le fichier de Manifeste, assurez-vous que le service est enfant de la demande: