Android Broadcast发送应用程序的包名称

时间:2016-11-16 17:54:43

标签: android android-intent broadcastreceiver

我知道BroadcastReceiver功能/功能如何在Android中运行,我已经实现了我的应用将接收或发送的多个操作。

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

示例(我有三个应用程序):
允许Application AApplication BApplication C发送广播。

Application C收到广播时,我想知道哪个应用发送了此广播,Application AApplication B

注意:我知道我可以在extra中添加Intent并发送包名称,但我正在查找“自动生成”的字段。我不想每次都做以下事情:

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;
    }
}

1 个答案:

答案 0 :(得分:3)

  

我想知道哪个应用程序发送了此广播,无论是应用程序A还是应用程序B?

将其添加为额外内容。

  

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

没有。默认情况下,Intent不包含有关创建Intent的应用的信息,不超过HashMap

  

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

据推测,那是因为你没有打电话给setPackage()。而且,由于该软件包无法识别发件人,因此无法帮助您。