2011-08-11 2 views
1

Mon application reçoit une intention des serveurs C2DM de s'enregistrer pour les notifications push (qui fonctionne bien), et en recevant ce message via un récepteur de diffusion, elle démarre un IntentService (pour gérer l'intention reçue de C2DM). Cependant l'appel pour commencer que IntentService échoue avec ceci:Qu'est-ce qui cause "Impossible de démarrer le service Intent"?

Unable to start service Intent { act=com.google.android.c2dm.intent.REGISTRATION 
cat=[com.company.myapp] cmp=com.company.myapp/.receiver.C2DMReceiver 
(has extras) }: not found 

Pouvez-vous me aider à comprendre ce que cela signifie erreur? La classe C2DMReceiver est sous-classée dans IntentService et existe certainement. J'utilise Intent.setClass() et en spécifiant la classe directement. Le compilateur l'accepte, donc je ne comprends pas pourquoi l'exception dit "Non trouvé". Qu'est-ce qui n'est pas trouvé?

Si quelqu'un peut offrir des conseils sur le débogage, je l'apprécierais vraiment.

<receiver android:name="com.company.myapp.receiver.C2DMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> 
     <!-- Receive the actual message --> 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <category android:name="com.company.myapp" /> 
     </intent-filter> 
     <!-- Receive the registration id --> 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
      <category android:name="com.company.myapp" /> 
     </intent-filter> 
    </receiver> 

Répondre

1

La cause de ceci était l'étiquette manquait dans le manifeste. Malheureusement, il semble que je l'ai accidentellement supprimé du manifeste, probablement lors d'une autre modification. Avec l'entrée de manifeste là, le IntentService commence bien.

+0

Quelle balise manquait? J'ai la même erreur peut-être que j'ai fait la même erreur. – Janusz

+0

pouvez-vous donner des informations brèves. J'ai aussi la même erreur. –

+0

est l'étiquette en question, où .GCMIntentService est le nom de la classe qui étend GCMBaseIntentService. La balise doit être à l'intérieur de vos balises . – Dororo

0

Avez-vous inscrit un filtre intention avec l'action com.google.android.c2dm.intent.REGISTRATION dans votre AndroidManifest.xml?

+0

Oui. Le récepteur de diffusion fonctionne correctement, il reçoit le message de C2DM, mais ce qui échoue alors, c'est le lancement du service IntentService. –

+0

Pouvez-vous ajouter votre AndroidManifest à la question? Au moins le bloc d'application, pour montrer comment vous avez utilisé le filtre d'intention. Aussi un exemple de code sur la façon dont vous avez envoyé l'intention. –

+0

J'ai ajouté la section manifeste –

0

Vous devez disposer d'un appareil équipé de l'application android 2.2+ et de l'application Market (c'est-à-dire un appareil officiel de Google).

+0

Je suis. C'est un Nexus One, ils ne sont pas beaucoup plus officiels que ça :) Mais comme je l'ai dit, le problème n'est pas de recevoir des messages de notification push des serveurs C2DM, ça fonctionne, le problème est quand le récepteur de diffusion essaie de démarrer IntentService pour traiter ce message. –

Questions connexes