好的,我自己想通了。以防万一其他人将来遇到这个问题;
我将尝试解释问题所在。
所以我有一个带有 GCM 集成的库项目,比如com.test.gcm-library。我想在另一个应用程序项目中使用这个库,比如com.example.gcmtest。通过遵循此处接受的答案,我设法在我的com.example.gcmtest中成功使用了该库项目。它在 API 级别 17 上运行良好,但是当我在 api 级别 10 上尝试它时,没有一个 GCMIntenetService 方法会被调用,也不会产生任何响应,因为我在我的问题中发布了但我最终设法修复了它。诀窍是在清单文件中更改接收者的意图类别。准确地说,我从以下更改了 com.example.gcmtest清单文件中的接收器声明 :
<receiver
android:name="com.test.gcm-library.MyCustomBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.test.gcm-library" />
</intent-filter>
</receiver>
对此:
<receiver
android:name="com.test.gcm-library.MyCustomBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.example.gcmtest" />
</intent-filter>
</receiver>
我不知道为什么,但是接收者类别字段看起来像是 API 17 的“不关心”条件,但对于较低的 API,这是我必须做的才能使其工作。