Как добиться функциональности LocalBroadcastManager, используя обычные трансляции программно, не сохраняя ничего в манифесте. Моя цель - ограничить область вещания моим собственным приложением.
Альтернативное решение для LocalBroadcastManager
Ответы (1)
Чтобы транслировать Intent
в контексте вашего приложения, LocalBroadcastManager
является самым безопасным способом сделать это. Однако, если вы хотите добиться аналогичной функциональности с помощью обычных широковещательных процедур, вы можете явно определить пакет, который должен прослушивать вашу трансляцию. Например:
Intent intent = new Intent("com.abc.my_action");
intent.setPackage("com.package.other"); //Set an explicit application package
sendBroadcast(intent);
Это ограничение для трансляций доступно в ICS и более поздних версиях. Для получения дополнительной информации прочитайте это.
P.S. Я бы по-прежнему рекомендовал вам придерживаться LocalBroadcastManager
, так как он передает намерения в контексте вашего приложения и считается самым безопасным.
person
waqaslam
schedule
08.05.2013
Нужно ли включать android-support-v4.jar для использования LocalBroadcastManager, даже если я ориентируюсь на ICS (android-14) и далее?
- person IgorGanapolsky; 27.02.2014
Да,
LocalBroadcastManager
доступен только через пакет android-support-v4, который является наиболее безопасным способом общения внутри контекста вашего приложения. Но если вы не хотите использовать его в своем проекте сборки ICS, то в качестве альтернативы вы можете полагаться на менее безопасные способы, такие как intent.setPackage
и/или intent.setComponent
.
- person waqaslam; 28.02.2014
Я предполагаю, что Google работает над альтернативной реализацией LocalBroadcastManager в будущем, если они не включили этот API в свою последнюю основную ветку на Git для KitKat. Я сомневаюсь, что их намерение состоит в том, чтобы заставить всех разработчиков снова начать обратную совместимость с android-support-v4...
- person IgorGanapolsky; 28.02.2014
LocalBroadcastManager
. ... ничего не сохраняя в манифесте. - именно то, что делаетLocalBroadcastManager
. - person user   schedule 08.05.2013