2016-11-16 3 views
0

Мне известно, как функция/функциональность BroadcastReceiver работает в Android, и я реализовал несколько действий, которые мое приложение получит или отправит.Android Broadcast Отправка имени пакета приложения

Однако, когда какое-либо из моих приложений получает широковещательную рассылку, я хочу знать, какое приложение было отправлено в эфир.

Пример (У меня есть три приложения):
Application A и Application B разрешено отправлять трансляцию на Application C.

Когда Application C получает трансляцию, я хочу знать, какое приложение отправило эту трансляцию, либо Application A, либо Application B?

Примечание: Я знаю, что я могу добавить extra в Intent и отправить имя пакета, однако я ищу поле, которое «автогенерировано». Я не хочу делать следующее каждый раз:

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; 
    } 
} 

ответ

1

Я хочу знать, какое приложение послал эту передачу, либо приложение А или приложение B?

Добавьте его как дополнительную.

Я ищу поле, которое «сгенерировано автоматически».

Существует нет. По умолчанию Intent не содержит информации о приложении, которое создало Intent, не более, чем HashMap.

Я также заметил, что существует метод getPackage() для Intent, но всегда возвращает null.

Предположительно, это потому, что вы не звоните setPackage(). И поскольку этот пакет не идентифицирует отправителя, он вам не поможет.

+0

Это неутешительно, но это то, что есть. благодаря –