Мне известно, как функция/функциональность 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;
}
}
Это неутешительно, но это то, что есть. благодаря –