Android广播发送应用程序';s包名称

Android广播发送应用程序';s包名称,android,android-intent,broadcastreceiver,Android,Android Intent,Broadcastreceiver,我知道在Android中,BroadcastReceiver特性/功能是如何工作的,我已经实现了我的应用程序将接收或发送的多个动作 然而,每当我的一个应用程序收到广播时,我想知道哪个应用程序发送了该广播 示例(我有三个应用程序): 应用程序A和应用程序B可以向应用程序C发送广播 当应用程序C接收到广播时,我想知道哪个应用程序发送了此广播,应用程序A或应用程序B 注意:我知道我可以在Intent中添加一个extra,并发送包名,但是我正在寻找一个“自动生成”的字段。我不想每次都执行以下操作: in

我知道在Android中,
BroadcastReceiver
特性/功能是如何工作的,我已经实现了我的应用程序将接收或发送的多个动作

然而,每当我的一个应用程序收到广播时,我想知道哪个应用程序发送了该广播

示例(我有三个应用程序):
应用程序A
应用程序B
可以向
应用程序C
发送广播

应用程序C
接收到广播时,我想知道哪个应用程序发送了此广播,
应用程序A
应用程序B

注意:我知道我可以在
Intent
中添加一个
extra
,并发送包名,但是我正在寻找一个“自动生成”的字段。我不想每次都执行以下操作:

intent.putExtra("package_name", getPackageName());
为什么,你问?以上只是一个例子。可能有两个以上的应用程序发送广播,我不希望它们每次都在
Intent
中发送包名

我还注意到有
getPackage()
方法用于
Intent
,但是它总是返回
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;
    }
}
我想知道哪个应用程序发送了此广播,应用程序A或应用程序B

把它作为一个额外的

我正在寻找一个“自动生成”的字段

没有。默认情况下,
Intent
HashMap
一样,不包含创建
Intent
的应用程序的相关信息

我还注意到Intent有getPackage()方法,但是它总是返回null

这大概是因为您没有调用
setPackage()
。而且,由于该软件包无法识别发件人,因此对您没有帮助