GCM no recibe el mensaje de abajo Android 4

Mi aplicación Gcm recibe un mensaje fino de GCM para Android 4 y versiones posteriores. Pero debajo de mi aplicación no se recibe el mensaje.

Este es el 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); } } 

Esta es la Intención:

 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); } 

Este es el manifiesto:

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

No puedo entender por qué no funciona debajo de Android 4? Gracias por adelantado.

Cambio

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

a

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

y

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

a

 <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> 
  • Single Sign-On de Google Plus Cross-Platform: onConnected nunca se llama en una instalación nueva
  • Google Plus +1 una aplicación de Google Play?
  • Notificación de empuje para actualizaciones de aplicaciones
  • AndroidStudio emulator "no se ejecutará a menos que actualice Google Play Services"
  • Android: ¿Disponibilidad de Google Analytics en Google Play Services?
  • GcmNetworkManager manejo de tareas peródicas
  • Servicios de Google Play en el emulador, implementación del botón de inicio de sesión de Google Plus, etc.
  • Cómo implementar onConnectionFailed () y onDisconnected () para un servicio de ubicación
  • Instalación opcional de Google Play Services
  • Error: No se pudo encontrar la clase 'android.app.AppOpsManager', que se hace referencia desde el método com.google.android.gms.common.GooglePlayServicesUtil.zza
  • No se pudo resolver: com.google.firebase: firebase-core: 11.2.0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.