Как добиться функциональности LocalBroadcastManager, используя обычные трансляции программным способом, не сохраняя ничего в манифесте. Моя цель - ограничить сферу вещания моим собственным приложением.Aletrnative solution для LocalBroadcastManager
ответ
Чтобы транслировать Intent
в контексте вашего приложения, LocalBroadcastManager
- это самый безопасный способ сделать это. Однако, если вы хотите достичь аналогичной функциональности с помощью обычных широковещательных процедур, вы можете явно определить пакет, который должен прослушивать вашу трансляцию. Например:
Intent intent = new Intent("com.abc.my_action");
intent.setPackage("com.package.other"); //Set an explicit application package
sendBroadcast(intent);
Это ограничение для трансляций доступно в ICS и далее. Для получения дополнительной информации читайте this.
P.S. Я бы порекомендовал вам придерживаться LocalBroadcastManager
, поскольку он транслирует намерения в контексте вашего приложения и считается самым безопасным.
Нужно ли включать поддержку android-support-v4.jar для использования LocalBroadcastManager, хотя я нацелен на ICS (android-14) и далее? –
Да, 'LocalBroadcastManager' доступен только через ** пакет android-support-v4 **, который является самым безопасным способом для общения внутри контекста вашего приложения. Но если вы не хотите использовать его в своем проекте сборки ICS, то в качестве альтернативы вы можете полагаться на менее безопасные способы, такие как 'intent.setPackage' и/или' intent.setComponent'. – waqaslam
Я предполагаю, что Google работает над альтернативной реализацией LocalBroadcastManager в будущем, если они не включили этот api в свою последнюю ведущую ветку Git для KitKat. Я сомневаюсь, что они намерены заставить всех разработчиков снова вернуться к совместимости с Android-поддержкой-v4 ... –
* Моя цель - ограничить область вещания моим собственным приложением * - Именно то, что делает 'LocalBroadcastManager'. * ... не сохраняя ничего в манифесте. * - Именно то, что делает «LocalBroadcastManager». – Luksprog