Direccionamiento explícito de una intención a un receptor de difusión dinámica

Soy nuevo en Android y estoy tratando de entender la comunicación entre aplicaciones.

Estoy tratando de escribir 3 pequeñas aplicaciones que pueden comunicarse entre sí. Si desea enviar un mensaje a todo el mundo, simplemente utilice una transmisión implícita.

Intención implícita intent.setAction("com.example.myChatMessage")

Si usted desea dirigir solamente 1 receptor specifc lo hice con

intent.setComponent("com.example.test.android.broadcastreceiver.b", "com.example.test.android.broadcastreceiver.b.myBroadcastReceiver") Intención intent.setComponent("com.example.test.android.broadcastreceiver.b", "com.example.test.android.broadcastreceiver.b.myBroadcastReceiver")

Esto funciona, cuando el receptor de difusión es una clase separada y se define en el AndroidManifest.xml.

Mi pregunta: ¿Es posible dirigirse explícitamente a un receptor de difusión registrado dinámico ?

 package com.example.test.android.broadcastreceiver.b; public class MainActivity extends Activity { private final IntentFilter intentfilter = new IntentFilter("com.example.myChatMessage"); private myBroadcastReceiver broadcastreceiver; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); broadcastreceiver = new myBroadcastReceiver(); registerReceiver(broadcastreceiver, intentfilter); } public static class myBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String message = intent.getStringExtra("message"); Log.d("message", "B received: "+message); } } } 

Recibe todas las transmisiones implícitas pero ninguna explícita – no sé caliente para dirigirla. ¿Me puedes ayudar?

No parece posible enviar una intención explícita a un receptor de difusión registrado dinámicamente. Registrar el receptor en AndroidManifest.xml es la única manera.

Si usted registra dinámicamente un BroadcastReceiver – llamando a Context.registerReceiver () – usted suministra una instancia de BroadcastReceiver … Si intenta enviar una intención al receptor nombrando la clase del BroadcastReceiver, nunca será entregada. Sistema no coincidirá con la Intención que declaró a la clase de la instancia BroadcastReceiver que registró.

Fuente: http://onemikro2nd.blogspot.com/2013/09/darker-corners-of-android.html

  • Usando getWindowManager () dentro de BroadcastReceiver
  • ¿Dónde anular el registro de BroadcastReceiver (en un servicio)?
  • Cómo limitar la transmisión a su propia aplicación para Android
  • El receptor de la difusión para comprobar la conexión a internet se llama dos veces cuando desconecto el wifi
  • No se puede encontrar todos los dispositivos bluetooth android
  • Broadcast Receivers - WhatsApp y servicios similares
  • Activar y desactivar receptor de difusión en el botón de clic
  • NEW_OUTGOING_CALL no se llama en el Samsung Galaxy S
  • Llamar a SetContentView () desde el receptor de difusión
  • La detección de cambios de estado de la red Android tarda tiempo
  • BroadcastReceiver en android.net.conn.CONNECTIVITY_CHANGE llamado varias veces
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.