GCM не получает сообщение ниже Android 4

Мое приложение Gcm получает прекрасное сообщение от GCM для Android 4 и выше. Но ниже моего приложения не поступает сообщение.

Это GcmBroadcastReceiver:

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub ComponentName comp = new ComponentName(context.getPackageName(), GCMIntentService.class.getName()); Log.i("GCM BROADCAST", "Begin Broadcast"); startWakefulService(context, intent.setComponent(comp)); setResultCode(Activity.RESULT_OK); } } 

Это намерение:

 public class GCMIntentService extends IntentService { public static final String TAG = "GcmIntentService"; public static final int NOTIFICATION_ID = 1; public GCMIntentService() { super(Constant.SENDER_ID); } /* (non-Javadoc) * @see android.app.IntentService#onHandleIntent(android.content.Intent) */ @Override protected void onHandleIntent(Intent intent) { // TODO Auto-generated method stub Bundle extras = intent.getExtras(); // Prendo l'istanza di Google Cloud Messaging GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this); // Prendo la stringa che mi indica il tipo di messaggio String messageType = gcm.getMessageType(intent); Log.i( TAG , "Messaggio ricevuto: " + extras.toString()); if(!extras.isEmpty()) { // Azione nel caso il messaggio sia di errore if(GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) sendNotification("Send error: " + extras.toString()); // Azione nel caso il messaggio sia riguardo l'eliminazione sul server else if(GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) sendNotification("Deleted messages on server: " + extras.toString()); // Azione nel caso sia un messaggio rigardante la nostra applicazione else if(GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) { sendNotification(extras.getString("message")); } } GcmBroadcastReceiver.completeWakefulIntent(intent); } 

Это проявление:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.gcmclient" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <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="com.google.android.c2dm.permission.RECEIVE" /> <permission android:name="com.example.gcm.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.gcmclient.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.example.gcmclient.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="com.example.gcmclient.broadcastreceivers" /> </intent-filter> </receiver> <service android:name="com.example.gcmclient.GCMIntentService" /> <service android:name="com.example.gcmclient.RegistrationService"></service> <receiver android:name="com.example.gcmclient.broadcastreceivers.BootHandler" android:enabled="true" android:exported="false"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> 

Я не понимаю, почему он не работает под Android 4? Заранее спасибо.

+ Изменить

 <permission android:name="com.example.gcm.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" /> 

в

 <permission android:name="com.example.gcmclient.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.example.gcmclient.permission.C2D_MESSAGE" /> 

а также

 <receiver android:name="com.example.gcmclient.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="com.example.gcmclient.broadcastreceivers" /> </intent-filter> </receiver> 

в

 <receiver android:name="com.example.gcmclient.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="com.example.gcmclient" /> </intent-filter> </receiver>