Я новичок в Android и пытаюсь понять связь между приложениями.Явное обращение к намерению динамически передающего приемника
Я пытаюсь написать 3 небольших приложения, которые могут общаться друг с другом. Если вы хотите отправить сообщение всем, вы просто используете неявное вещание.
неявного Намерениеintent.setAction("com.example.myChatMessage")
если вы хотите адресовать только 1, специфический приемник я сделал это с
Явного Намерениеintent.setComponent("com.example.test.android.broadcastreceiver.b", "com.example.test.android.broadcastreceiver.b.myBroadcastReceiver")
это работает, когда радиовещательный приемник является отдельным классом и определен в AndroidManifest.xml.
Мой вопрос: Можно ли явного адреса dynamicall зарегистрированный широковещательный приемник?
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);
}
}
}
Он получает все неявные трансляции, но не имеет явного ответа - я не знаю, как горячо его адресовать. Вы можете мне помочь?
Используя метод: 'intent.setPackage ("com.example.test.android.broadcastreceiver.b")' работает явный адрес приложения, а затем с помощью неявного намерения разрешения. Из-за ошибки [link] (https://www.eecs.berkeley.edu/~daw/papers/intents-mobisys11.pdf) вы должны использовать ее только с Android 4.0 «В качестве альтернативы, начиная с ICE_CREAM_SANDWICH, вы также можете безопасно ограничить трансляцию одним приложением с помощью Intent.setPackage' –
Только один документ [ссылка] (https://www.cs.berkeley.edu/~daw/papers/andsurf-spsm12.pdf), который гласит: «Однако, Динамические Ресиверы (широковещательные приемники, объявленные во время выполнения) представляют собой исключение , поскольку некоторые из них могут получать неявные намерения. Таким образом, они всегда общедоступны, а намерения, которые они получают, должны совпадать с одним из их фильтров намерений. «Какой из них можно получить явным? –