GCM BroadcastReceiver setResultCode uso

Estoy utilizando el ejemplo de GCM de los desarrolladores de Android y no podía entender el propósito de la setResultCode (Activity.Result_OK). ¿Qué componente recibe este mensaje? ¿Quién lo llama y lo recibe?

Aquí está el ejemplo

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ComponentName comp = new ComponentName(context.getPackageName(),GcmIntentService.class.getName()); startWakefulService(context, (intent.setComponent(comp))); setResultCode(Activity.RESULT_OK); // ????? } } 

Gracias.

La emisión en la que tu aplicación recibe el mensaje GCM es una emisión ordenada.

Las emisiones ordenadas (enviadas con Context.sendOrderedBroadcast) se envían a un receptor a la vez. A medida que cada receptor se ejecuta a su vez, puede propagar un resultado al siguiente receptor, o puede abortar completamente la emisión para que no se pase a otros receptores. Los receptores de órdenes que se ejecutan pueden ser controlados con el atributo android: priority del filtro de intención coincidente; Receptores con la misma prioridad se ejecutarán en un orden arbitrario.

Esto significa que si su aplicación tiene varios receptores de difusión configurados para manejar mensajes GCM, se llamarán uno tras otro (en un orden que depende de su prioridad). Es posible que tenga varios receptores de difusión que manejen mensajes GCM si, por ejemplo, su aplicación utiliza alguna biblioteca de terceros que utiliza GCM y además su aplicación utiliza GCM directamente. En este caso, desea que su aplicación maneje sólo sus propios mensajes y no los mensajes enviados a la biblioteca de terceros (y viceversa).

Si uno de ellos maneja el mensaje GCM y no desea que los demás lo manejen también, puede abortar la transmisión. Lo hace por setResultCode(Activity.RESULT_CANCEL) . Por otro lado, setResultCode(Activity.RESULT_OK) propagaría el resultado del primer receptor al siguiente receptor.

En ese caso, su código se vería así:

 public class GCMBroadcastReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getExtras ().get("from").equals (SENDER_ID_OF_YOUR_APP) { ComponentName comp = new ComponentName( GcmIntentService.class.getPackage().getName(), GcmIntentService.class.getName()); startWakefulService(context, (intent.setComponent(comp))); // abort the broadcast setResultCode(Activity.RESULT_CANCEL); } else // don't abort the broadcast setResultCode(Activity.RESULT_OK); } } } 

Si sólo tiene un receptor de difusión que maneje el mensaje GCM, la llamada a setResultCode tiene mucha importancia.

En realidad, setResultCode(Activity.RESULT_CANCEL) por sí solo no anulará la emisión. Tienes que llamar a abortBroadcast() :

http://developer.android.com/reference/android/content/BroadcastReceiver.html#abortBroadcast ()

Establece el indicador que indica que este receptor debe abortar la emisión actual; Sólo funciona con transmisiones enviadas a través de Context.sendOrderedBroadcast. Esto evitará que otros receptores de radiodifusión reciban la emisión.

  • Tamaño de icono de la barra de estado de Android - Uso de Cordova / Phonegap Push Plugin
  • Implementación de la notificación push del servidor
  • Enviar notificaciones push a la aplicación en una configuración limitada - fake_push_profile not found Ionic
  • Notificación lanza RemoteServiceException en el dispositivo de Motorola con OS 7
  • BroadcastReceiver no se llama cuando la pantalla está bloqueada en Android
  • Android Push Notification, cuando la aplicación está cerrada Tengo un estilo diferente
  • El clic de Android en la notificación no abre la Actividad adjunta
  • Analizar: enviar notificaciones push desde la aplicación
  • Cómo implementar notificaciones push para android en React Native
  • Nuevo error de origen desconocido del registro de la API de GCM
  • Firebase Cloud Messaging: mejores prácticas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.