我知道 BroadcastReceiver
特性/功能在 Android 中是如何工作的,并且我已经实现了我的应用将接收或发送的多个操作。
但是,每当我的一个应用程序收到广播时,我想知道是哪个应用程序发送了该广播。
示例(我有三个应用程序):
应用程序 A
和 应用程序 B
被允许向 应用程序 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;
}
}
最佳答案
I want to know which application sent this broadcast, either Application A or Application B?
将其添加为额外内容。
I am looking for a field that is "auto-generated".
没有。默认情况下,Intent
不包含有关创建 Intent
的应用程序的信息,而 HashMap
包含的信息更多。
I also noticed there is getPackage() method for Intent, however that always returns null.
大概是因为您没有调用 setPackage()
。而且,由于该包裹无法识别发件人,因此对您没有帮助。
关于Android广播发送应用的包名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40639007/