解決策を見つけた1日の苦労の後、私は同じ問題を抱えています。まず、GCM関連コードをメインパッケージに入れ、androidManifest.xmlのパッケージに従って変更します
簡単な例を挙げます。私のプロジェクト名はGCMExampleで、3つのパッケージがあります1. com.examle.GCMExample(メインパッケージ)、2。com.examle.GCMExample.activity(2番目のパッケージ)、3。com.example.GCMExample.adapter(3番目のパッケージ)
GCM関連のクラスファイルを2番目のパッケージに入れると、登録IDが取得されません
1. GCMIntentService、2。ServerUtilities、3。CommonUtilities4.WakeLockerを私のメインパッケージに入れたような私のGCM関連クラス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" />