android - возможно ли использовать личные намерения вместо глобальных? - PullRequest
4 голосов
/ 16 марта 2012

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

Вопрос: Можно ли разрешить отправлять и получать намерения только в моем собственном приложении (или приложениях, или пакетах) в одной и той же области, чтобы другое приложение не могло их получать или мешать потоку приложения?

Пример: Предположим, у меня есть broadcastReceiver, который слушает какое-то намерение, но это намерение предназначено только для использования другим сервисом / действием, которое находится либо внутри моего приложения, либо внутри другого приложения, которое я создал, но я не хочу другие могут использовать это намерение.

, пожалуйста, помогите мне.

Ответы [ 2 ]

6 голосов
/ 16 марта 2012

setPackage()

Укажите явное имя пакета приложения, которое ограничивает компоненты, к которым будет разрешаться это намерение.Если оставить значение по умолчанию пустым, будут рассмотрены все компоненты во всех приложениях.Если не ноль, Intent может соответствовать только компонентам в данном пакете приложения.

или вы можете использовать setSelector(), но не оба одновременно.

4 голосов
/ 16 марта 2012

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

В дополнение к прекрасному ответу Рено, для ваших конкретных требований, указанных выше, используйте LocalBroadcastManager.Вы не только получаете безопасность, которую вы ищете, но и более эффективную.LocalBroadcastManager доступно в пакете поддержки Android, и AFAIK должен вернуться к Android 1.6. Вот пример проекта с использованием LocalBroadcastManager.

...