Android广播发送应用程序的包名

问题描述:

我知道BroadcastReceiver功能/功能在Android中如何工作,并且我已经实现了多个应用程序可以接收或发送的操作。Android广播发送应用程序的包名

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

实施例(I有三个应用程序):
Application AApplication B被允许广播发送到Application C

Application C收到广播,我想知道哪个应用程序发送此广播,要么Application AApplication 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()。而且,由于该软件包不能识别发件人,因此不会对您有所帮助。

+0

这是令人失望的,但它是什么。谢谢 –