Android广播发送应用程序的包名
问题描述:
我知道BroadcastReceiver
功能/功能在Android中如何工作,并且我已经实现了多个应用程序可以接收或发送的操作。Android广播发送应用程序的包名
但是,每当我的某个应用程序收到广播时,我想知道哪个应用程序发送了该广播。
实施例(I有三个应用程序):Application A
和Application B
被允许广播发送到Application C
。
当Application C
收到广播,我想知道哪个应用程序发送此广播,要么Application A
或Application 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
不包含有关创建Intent
的应用的信息,不包括HashMap
以上的信息。
我也注意到有意图的getPackage()方法,但是总是返回null。
大概,那是因为你不叫setPackage()
。而且,由于该软件包不能识别发件人,因此不会对您有所帮助。
这是令人失望的,但它是什么。谢谢 –