¿Cómo utilizar 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. Entonces 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 radiodifusión. En la actividad A1, envíe los intentos 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 difusión es la siguiente:

 <activity android:name="ch.ifi.csg.games4blue.games.pacman.controller.PacmanGame" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.BROADCAST" /> </intent-filter> </activity> 

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

 <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".PacmanGame" android:label="@string/app_name" android:screenOrientation="portrait"> <intent-filter> <action android:name="pacman.intent.action.Launch" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <receiver android:name="ch.ifi.csg.games4blue.games.pacman.controller.MsgListener" /> </activity> </application> 

El oyente de mensajes 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 el método en la actividad A1 es llamado, nunca recibo una intención en B1.

¿Algún consejo de cómo solucionar esto? ¡Muchas gracias!

  1. Tu elemento <receiver> debe ser un elemento del elemento <activity> , 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 <intent-filter> con su acción personalizada debe colocarse en el <receiver> , no el envío o la recepción <activity>

Vea aquí un ejemplo de implementación de un receptor de radiodifusión con registro de manifiesto (para una intención de difusión del sistema).

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

Vs

<android:name="android.intent.action.BROADCAST"/>

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

Lo que alguna vez la acción que estamos pasando dentro de android, tenemos que utilizar la misma acción al crear objeto Intent o setAction () método de intención. Cuando enviaremos este objeto de Intención con la ayuda del método sendBroadcasteReceiver () de Contexto, entonces enviará esta acción a todo receptor (sin permiso), lo que el receptor que hemos establecido en Manifest.xml todos (que tiene la misma acción en la intención -filter tag) obtener esta acción.

Aún no funciona para usted?

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

Al enviar la emisión añadir el indicador ff:

El indicador FLAG_INCLUDE_STOPPED_PACKAGES se agrega a la intención antes de que se envíe para indicar que se debe permitir que la intención inicie un componente de una aplicación detenida.

 intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
  • Android: obtener notificaciones cuando se acumulan (escucha de notificaciones)
  • ¿Por qué mi Broadcast Receiver no recibe las acciones de difusión del sistema?
  • Activar y desactivar receptor de difusión en el botón de clic
  • Broadcast reciever correr en el hilo principal?
  • Detección de cambios en el tipo de red (TelephonyManager) en android
  • Detectar la actualización de la aplicación de Android y establecer la clase de aplicación booleana para mostrar / ocultar el CLUF
  • Iniciar actividad marcando un número
  • Android se comunica entre la actividad y el receptor de radiodifusión
  • Android BroadcastReceiver en el inicio - sigue funcionando cuando la actividad está en segundo plano
  • Android - ¿Cuándo registrar / cancelar la inscripción de los receptores de difusión creados en una actividad?
  • Recepción de paquetes de instalación y desinstalación de eventos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.