经过1天的努力,我遇到了同样的问题,我找到了解决方案。首先,我将我的 GCM 相关代码放入我的主包中,并根据 androidManifest.xml 中的我的包进行更改
我给你一个简单的例子。我的项目名称是 GCMExample,我有三个包 1. com.examle.GCMExample(Main Package) , 2. com.examle.GCMExample.activity(Second Package) , 3. com.example.GCMExample.adapter(Third Package)
当我的 GCM 相关类文件进入我的第二个包时,我没有获得注册 ID
我的 GCM 相关类,如 1. GCMIntentService 、 2. ServerUtilities 、 3. CommonUtilities 4. WakeLocker 放入我的主包 com.example.GCMExample
还有我的 androidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<permission android:name="com.example.GCMExample.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.GCMExample.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
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.GCMExample" />
</intent-filter>
</receiver>
<service android:name="com.example.GCMExample.GCMIntentService" />