Альтернативное решение для LocalBroadcastManager

Как добиться функциональности LocalBroadcastManager, используя обычные трансляции программно, не сохраняя ничего в манифесте. Моя цель - ограничить область вещания моим собственным приложением.


person Pavandroid    schedule 08.05.2013    source источник
comment
Моя цель — ограничить область вещания моим собственным приложением. Именно это и делает LocalBroadcastManager. ... ничего не сохраняя в манифесте. - именно то, что делает LocalBroadcastManager.   -  person user    schedule 08.05.2013


Ответы (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
comment
Нужно ли включать android-support-v4.jar для использования LocalBroadcastManager, даже если я ориентируюсь на ICS (android-14) и далее? - person IgorGanapolsky; 27.02.2014
comment
Да, LocalBroadcastManager доступен только через пакет android-support-v4, который является наиболее безопасным способом общения внутри контекста вашего приложения. Но если вы не хотите использовать его в своем проекте сборки ICS, то в качестве альтернативы вы можете полагаться на менее безопасные способы, такие как intent.setPackage и/или intent.setComponent. - person waqaslam; 28.02.2014
comment
Я предполагаю, что Google работает над альтернативной реализацией LocalBroadcastManager в будущем, если они не включили этот API в свою последнюю основную ветку на Git для KitKat. Я сомневаюсь, что их намерение состоит в том, чтобы заставить всех разработчиков снова начать обратную совместимость с android-support-v4... - person IgorGanapolsky; 28.02.2014