【问题标题】:Android Broadcast Sending app's package nameAndroid 广播发送应用的包名
【发布时间】:2016-11-16 17:54:43
【问题描述】:

我了解BroadcastReceiver 特性/功能在 Android 中的工作方式,并且我已经实现了我的应用将接收或发送的多个操作。

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

示例(我有三个应用程序):
允许Application A 和Application B 向Application 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;
    }
}

【问题讨论】:

    标签: android android-intent broadcastreceiver


    【解决方案1】:

    我想知道是哪个应用程序发送了这个广播,是应用程序 A 还是应用程序 B?

    将其添加为额外的。

    我正在寻找“自动生成”的字段。

    没有。默认情况下,Intent 不包含有关创建 Intent 的应用程序的信息,就像 HashMap 一样。

    我还注意到 Intent 有 getPackage() 方法,但是它总是返回 null。

    大概是因为你没有打电话给setPackage()。而且,由于该包裹无法识别发件人,因此对您没有帮助。

    【讨论】:

      猜你喜欢
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      相关资源
      最近更新 更多