BroadcastReceiver
功能/功能在Android中的工作方式,并且我已经实施了我的应用程序要么接收或发送的多个操作。 wow,每当我的一个应用程序中的一个收到广播时,我都想知道该应用程序发送了该广播。示例(我有三个应用程序):
Application A
和Application B
允许将广播发送至
Application C
。 当收到广播时,我想知道哪个应用程序发送了此广播,无论是
Application C
或Application A
吗?
注:我知道我可以在
Application B
中添加一个
extra
并发送软件包名称,但是我正在寻找一个“自动生成”的字段。 我不想每次进行以下操作:
Intent
,你问吗? 上面只是一个例子。可能有两个以上的应用程序发送广播,我不希望它们每次发送the Package name。我还注意到有
intent.putExtra("package_name", getPackageName());
方法,但是总是返回Intent
。
getPackage()
我想知道哪个应用程序发送了此广播,应用程序A或应用程序B?
将其作为额外的添加。我正在寻找一个“自动生成”的字段。
没有。默认情况下,一个
Intent
不包含有关创建该应用程序的信息,而不是
null
我还注意到有意图的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;
}
}
。而且,由于该软件包无法识别发件人,因此不会为您提供帮助。
最终我们有一个API:
Broadcastreceiver.getSentFrompackage