¿Cómo usar Broadcast Receiver en diferentes aplicaciones en Android?

Tengo aquí dos aplicaciones en dos proyectos diferentes en eclipse. Una aplicación (A) define una actividad (A1) que se inicia primero. Luego, comienzo de esta actividad la segunda actividad (B1) en el segundo proyecto (B). Esto funciona bien

Lo comienzo de la siguiente manera:

Intent intent = new Intent("pacman.intent.action.Launch"); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(intent); 

Ahora quiero enviar intenciones entre las dos actividades mediante el uso de receptores de difusión. En la actividad A1, envío los bashs de la siguiente manera:

 Intent intent = new Intent("pacman.intent.action.BROADCAST"); intent.putExtra("message","Wake up."); sendBroadcast(intent); 

La parte del archivo de manifiesto en la actividad A1 que es responsable de esta transmisión es la siguiente:

          

En la actividad de recepción, defino el receptor de la siguiente manera en el archivo de manifiesto:

          

El oyente del mensaje de clase se implementa de esta manera:

 public class MsgListener extends BroadcastReceiver { /* (non-Javadoc) * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent) */ @Override public void onReceive(Context context, Intent intent) { System.out.println("Message at Pacman received!"); } } 

Lamentablemente, el mensaje nunca se recibe. Aunque se llama el método en la actividad A1, nunca recibo un bash en B1.

¿Alguna pista sobre cómo resolver esto? ¡Muchas gracias!

  1. Su elemento debe ser un par de su elemento , no un elemento secundario.
  2. Su cadena de acción NO debe estar en el espacio de nombres android.intent.action , a menos que trabaje para Google: use ch.ifi.csg.games4blue.games.pacman.controller.BROADCAST o algo así en su lugar
  3. Su con su acción personalizada debe colocarse en el , no en el envío o recepción

Vea aquí un ejemplo de implementación de un receptor de difusión registrado manifiestamente (para un Intento de transmisión de sistema).

Intent intent = new Intent("pacman.intent.action.BROADCAST");

vs.

¿Estás seguro de que usas la misma cadena en código real?

Cualquiera que sea la acción que pasamos dentro de Android, tenemos que usar la misma acción al crear el objeto Intent o el método setAction () de Intención. cuando enviaremos este objeto Intent con la ayuda del método sendBroadcasteReceiver () de Context, entonces enviará esta acción a todos los receptores (sin permiso), cualquiera que sea el receptor que hayamos configurado en Manifest.xml all will (quien tenga la misma acción en su bash) -filter tag) obtener esta acción.

Todavía no está trabajando para ti?

Aunque las respuestas son útiles, todavía tenía el problema. Tengo la solución aquí .

al enviar la transmisión, agregue la bandera ff:

El indicador FLAG_INCLUDE_STOPPED_PACKAGES se agrega al bash antes de enviarse para indicar que se permite que el bash inicie un componente de una aplicación detenida.

 intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);