Android 向动态广播接收器显式寻址意图
我刚接触安卓系统,试图了解应用程序之间的通信 我正试图写3个小应用程序,可以相互通信。如果你想向每个人发送消息,你只需使用隐式广播 隐式意图Android 向动态广播接收器显式寻址意图,android,broadcastreceiver,Android,Broadcastreceiver,我刚接触安卓系统,试图了解应用程序之间的通信 我正试图写3个小应用程序,可以相互通信。如果你想向每个人发送消息,你只需使用隐式广播 隐式意图Intent.setAction(“com.example.myChatMessage”) 如果你只想处理一个我用过的特定接收者 明确说明意图Intent.setComponent(“com.example.test.android.broadcastreceiver.b”, “com.example.test.android.broadcastreceiv
Intent.setAction(“com.example.myChatMessage”)
如果你只想处理一个我用过的特定接收者
明确说明意图Intent.setComponent(“com.example.test.android.broadcastreceiver.b”,
“com.example.test.android.broadcastreceiver.b.myBroadcastReceiver”)
当广播接收器是一个单独的类并在AndroidManifest.xml中定义时,这一点就起作用了
我的问题是:是否可以显式寻址已注册的动态呼叫广播接收器
它接收所有隐式广播,但没有显式广播——我不知道如何处理它。您能帮助我吗?似乎无法向动态注册的广播接收器发送明确的意图。在AndroidManifest.xml中注册接收方是唯一的方法 如果通过调用Context.registerReceiver()动态注册BroadcastReceiver,则提供一个BroadcastReceiver实例。。。如果您试图通过命名BroadcastReceiver的类来向接收方发送意图,它将永远不会被传递。。Android系统将与您向注册的BroadcastReceiver实例的类声明的意图不匹配
来源:使用方法:
intent.setPackage(“com.example.test.android.broadcastreceiver.b”)
用于显式寻址应用程序,然后使用隐式intent解析。由于存在缺陷,您应该仅在Android 4.0上使用它。或者,从冰淇淋三明治开始,您还可以安全地将广播限制为单个应用程序。setPackage只发现一篇文章说:但是,动态接收器(在运行时声明的广播接收器)是一个例外,因为有些人只能接受隐含的意图。因此,它们总是公共的,并且它们接收的意图必须与它们的意图过滤器中的一个匹配。
哪一个可以接收明确的意图过滤器?
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);
}
}
}