【发布时间】:2016-11-16 17:54:43
【问题描述】:
我了解BroadcastReceiver 特性/功能在 Android 中的工作方式,并且我已经实现了我的应用将接收或发送的多个操作。
但是,每当我的一个应用程序接收到广播时,我想知道是哪个应用程序发送了该广播。
示例(我有三个应用程序):
允许Application A 和Application B 向Application C 发送广播。
当Application C收到广播时,我想知道是哪个应用发送了这个广播,是Application A还是Application B?
注意:我知道我可以在Intent 中添加一个extra 并发送包名称,但是我正在寻找一个“自动生成”的字段。我不想每次都做以下事情:
intent.putExtra("package_name", getPackageName());
原因,你问?以上只是一个例子。可能有两个以上的应用程序发送广播,我不希望它们每次都在Intent 中发送包名称。
我还注意到Intent 有一个getPackage() 方法,但是它总是返回null。
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
switch (action) {
case MY_GLOBAL_ACTION:
// this is where I want the package name of the application that sent the broadcast
intent.getPackage(); // this is always null
break;
default:
break;
}
}
【问题讨论】:
标签: android android-intent broadcastreceiver