私は 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 で定義されている場合に機能します。
私の質問:動的に登録されたブロードキャスト レシーバーを明示的にアドレス指定することは可能ですか?
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);
}
}
}
それはすべての暗黙のブロードキャストを受け取りますが、明示的なブロードキャストは受け取りません - 私はそれに対処するのが難しいとは思いません。手伝って頂けますか?