Явное обращение к намерению к динамически широковещательному приемнику

Я новичок в Android и пытаюсь понять связь между приложениями.

Я пытаюсь написать 3 маленьких приложения, которые могут общаться друг с другом. Если вы хотите отправить сообщение всем, вы просто используете неявное вещание.

Неявное намерение намерение.setAction intent.setAction("com.example.myChatMessage")

Если вы хотите только 1 конкретный приемник, я сделал это с помощью

intent.setComponent("com.example.test.android.broadcastreceiver.b", "com.example.test.android.broadcastreceiver.b.myBroadcastReceiver") Intent intent.setComponent("com.example.test.android.broadcastreceiver.b", "com.example.test.android.broadcastreceiver.b.myBroadcastReceiver")

Это работает, когда широковещательный приемник является отдельным классом и определен в AndroidManifest.xml.

Мой вопрос: возможно ли явное обращение к динамически зарегистрированному широковещательному приемнику ?

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

Он получает все неявные трансляции, но не имеет явного ответа – я не знаю, как горячо его адресовать. Вы можете мне помочь?

Solutions Collecting From Web of "Явное обращение к намерению к динамически широковещательному приемнику"

Не представляется возможным отправить явное намерение динамически зарегистрированному широковещательному приемнику. Регистрация приемника в AndroidManifest.xml – единственный способ.

Если вы динамически регистрируете BroadcastReceiver – вызывая Context.registerReceiver () – вы предоставляете экземпляр BroadcastReceiver … Если вы попытаетесь отправить намерение получателю, назвав класс BroadcastReceiver, он никогда не будет доставлен. Android Система не будет соответствовать объявлению, которое вы объявили классу экземпляра BroadcastReceiver, который вы зарегистрировали.

Источник: http://onemikro2nd.blogspot.com/2013/09/darker-corners-of-android.html