2011-08-11 122 views
1

我的應用程序從C2DM服務器收到一個意圖來註冊推送通知(工作正常),並且在通過廣播接收器接收到該消息時,它啓動一個IntentService(處理從C2DM接收到的意圖)。然而調用啓動IntentService與此失敗:什麼原因導致「無法啓動服務意圖」?

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 

你能幫我明白這是什麼錯誤意味着? C2DMReceiver類是IntentService的子類,它當然存在。我正在使用Intent.setClass()並直接指定類。編譯器接受它,所以我不明白爲什麼異常說「未找到」。什麼沒有找到?

如果任何人都可以提供關於調試的任何提示,我真的很感激它。

<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> 

回答

1

原因是清單中缺少標籤。不幸的是,它看起來像我不小心從清單中刪除它,可能同時進行另一次編輯。通過清單條目,IntentService可以正常啓動。

+0

哪個標籤丟失?我得到同樣的錯誤,也許我犯了同樣的錯誤。 – Janusz

+0

你可以給簡要的信息。我也遇到了同樣的錯誤。 –

+0

是有問題的標籤,其中.GCMIntentService是擴展GCMBaseIntentService的類的名稱。標籤必須位於您的標籤內。 – Dororo

0

有你在AndroidManifest.xml中註冊用行動com.google.android.c2dm.intent.REGISTRATION意圖過濾器?

+0

是的。廣播接收器工作正常,它接收來自C2DM的消息,但之後失敗的是啓動IntentService。 –

+0

你可以添加你的AndroidManifest到這個問題嗎?至少應用程序塊,以顯示您如何使用意圖過濾器。還有一個關於如何調度意圖的代碼示例。 –

+0

我已經添加了清單部分 –

0

您必須安裝有安裝了Android 2.2+和Market應用程序的設備(意味着它是官方的Google設備)。

+0

我是。這是一個Nexus One,他們沒有得到比官方更多的:)但是,正如我所說的問題是沒有從C2DM服務器收到推送通知消息,這工作正常,問題是當廣播接收機試圖啓動IntentService處理該消息。 –

相關問題