Je sais, je ne suis pas le premier à être confronté à ce problème, mais j’ai essayé tellement de solutions que j’ai trouvé et que personne ne fonctionne ... peut-être pourriez-vous trouver l’erreur
L'erreur (également venue sans .class et avec /.Client en fonction d'autres paramètres)
12-02 16: 40: 15.359: W/ActivityManager (74): impossible de démarrer le service Intention {act = com.Android.fh.EnOceanApp.Client.class}: non trouvé
Dans le manifeste, cela est inclus dans l'application, hors activités (essayé aussi dans les activités et avec ".Client"
Le code dans onCreate ()
startService(new Intent(this, Client.class));
ou
startService(new Intent(this.getApplicationContext(), Client.class));
ou
Intent intent=new Intent("com.Android.fh.EnOceanApp.Client.class");
this.startService(intent);
ou
Intent intent=new Intent("com.Android.fh.EnOceanApp.Client");
this.startService(intent);
Et maintenant, je n'ai plus d'idée .... com.Android.fh.EnOceanApp est le package Client.Java la classe de service de ce package.
et le manifeste j'ai oublié:
<application
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name" >
<activity
Android:label="@string/app_name"
Android:name=".EnOceanAppActivity" >
<intent-filter >
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity Android:name=".ListView"
Android:label="List View">
</activity>
<activity Android:name=".GraphView"
Android:label="Graph View">
</activity>
<service
Android:name=".Client"></service> //with and without ., of course without this comment
</application>
Alors .. juste pour éventuellement aider les autres ou non:
J'ai créé un nouveau projet, copié les sources et essayé de l'exécuter: le service a été trouvé. Quelle était la différence, ou en d'autres termes: qu'est-ce qui, à mon avis, pourrait poser problème: le nom du paquet long ou le début avec com.Android.. . Dans le nouveau projet, je viens de choisir com.enocean
Merci à l'utilisateur njzk2 de m'avoir laissé remarquer ce qui se passait.
J'ai eu le même problème. Il semble qu'Android OS ne puisse pas trouver la classe de service que vous avez demandée si vous ne vous êtes pas encore inscrit dans le fichier manifeste de votre projet.
Rappelez-vous qu'un service est comme une activité mais sans interface graphique. Cela signifie que les services doivent être enregistrés avant que vous puissiez les utiliser
Voici comment vous enregistrez le service dans votre projet Android:
<application>
<!-- your code -->
<activity>
<!-- your code -->
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service Android:name="com.your.own.service.class"></service>
</application>
N'oubliez pas que la classe YourService doit être étendue à partir du service, sinon votre classe ne sera pas un service.
public class YourService extends Service{}
Parfois, vous aurez besoin de qualifier complètement le nom de votre classe dans le manifeste, plutôt que d'utiliser le shortform (.classname). Je l'ai constaté lorsque j'utilisais des classes d'un package différent, mais cela aiderait peut-être ici, étant donné que l'objectif du service peut sortir de l'application.
Malgré TOUTES les réponses de ce billet et de nombreuses autres réponses connexes Impossible de démarrer le service Intention: non trouvéImpossible de démarrer le service Intent , je me suis toujours battu et il m'a fallu un certain temps pour le mettre en marche. . Mon scénario était légèrement plus compliqué puisque j'essaie de démarrer un service dans une application différente de celle avec laquelle je l'appelle. Je l'ai compris et voici TOUS les détails, ainsi que du code bonus.
MainActivity d'intention d'appel (ou où que ce soit)
Intent intent=new Intent("com.example.core.MusicService.1234");
//Or Intent intent=new Intent("com.example.core.MusicService.TOGGLE_PLAYBACK");
PendingIntent pendingIntent = PendingIntent.getService(this, 99, intent, PendingIntent.FLAG_CANCEL_CURRENT);
Manifest: of Service (numéro de service dans le numéro de demande)
<service Android:name="com.example.core.MusicService">
<intent-filter>
<action Android:name="com.example.core.MusicService1234"></action>
</intent-filter>
<intent-filter>
<action Android:name="com.example.core.MusicService.TOGGLE_PLAYBACK"></action>
</intent-filter>
</service>
MusicService.Java
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(intent != null){
if(intent.getAction() != null){
if(intent.getAction().contentEquals("com.example.core.MusicService.TOGGLE_PLAYBACK")){
//Do work here
}
}
}
}
Notes
Crédit à: les informations cumulatives de tous les messages :)
Si quelqu'un voit cela et a le même problème que moi, c'est parce que j'ai suivi un guide et utilisé context.startService()
au lieu de context.startActivity()
Eh bien, dans mon cas, j'ai dû nettoyer le projet. Cela se produit parfois lorsque vous avez créé une nouvelle classe Java pour le service dans votre package/projet mais que vous n'avez pas construit/nettoyé le projet après mot. Dans mon cas, il me suffisait de nettoyer le projet pour éliminer l'erreur.
C'est une erreur stupide d'Android
Cela ne fonctionnera pas
<service
Android:name=".classname"/>
Mais cela fonctionnera, avoir une balise de fermeture séparée
<service
Android:name=".classname"></service>
J'ai commis l'erreur stupide d'ajouter la balise à une autre dans le manifeste.
Dans ce cas, l'application actuelle n'a pas pu trouver le service défini.
J'espère que vous passerez cette erreur :)
Merci.