我知道BroadcastReceiver
功能/功能如何在Android中运行,我已经实现了我的应用将接收或发送的多个操作。
但是,每当我的一个应用程序收到广播时,我想知道哪个应用程序发送了该广播。
示例(我有三个应用程序):
允许Application A
和Application B
向Application C
发送广播。
当Application C
收到广播时,我想知道哪个应用发送了此广播,Application A
或Application 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;
}
}
答案 0 :(得分:3)
我想知道哪个应用程序发送了此广播,无论是应用程序A还是应用程序B?
将其添加为额外内容。
我正在寻找一个“自动生成”的字段。
没有。默认情况下,Intent
不包含有关创建Intent
的应用的信息,不超过HashMap
。
我还注意到Intent有getPackage()方法,但总是返回null。
据推测,那是因为你没有打电话给setPackage()
。而且,由于该软件包无法识别发件人,因此无法帮助您。