Что такое Поглощенные Фильтры точно?

Я прочитал много статей о поглощенных фильтрах, и я действительно не могу понять точно, что они делают?

таким образом, если кто-либо может объяснить мне с ясным примером, какова роль поглощенных фильтров точно?

спасибо

19
задан Pravy 20 April 2011 в 08:15
поделиться

4 ответа

Думаю, это хорошо документировано здесь . Подводя итог, когда (например) вы передаете намерение Context.startActivity или Context.startService или транслируете его с помощью Context.sendBroadcast и т. Д., Какое действие или услуга (или какой набор широковещательных приемников) доставляется?

Ответ: если намерение является «явным», т. Е. В нем задано поле имени компонента, то оно доставляется в целевой компонент, который он указывает - обычно это происходит при обмене данными внутри приложения.

В противном случае («неявное» намерение, как это типично для обмена данными между приложениями) Android должен самостоятельно определять наилучшее действие или услугу (или набор приемников). Как Android это делает? Вот тут-то и пригодятся фильтры, и я цитирую:

Он делает это путем сравнения содержимого объекта Intent к намерению фильтры, структуры, связанные с компоненты, которые потенциально могут получить намерения. Фильтры рекламируют возможности компонента и разграничить намерения, с которыми он может справиться. Они открывают компонент для возможность получения неявных намерения рекламируемого типа. Если компонент не имеет никакого намерения фильтры, он может получать только явные намерения. Компонент с фильтрами может получать как явные, так и неявные намерения.

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

19
ответ дан 30 November 2019 в 03:28
поделиться

Фильтр намерения позволяет системе узнать, какие данные или запросы службы может обрабатывать компонент. Компонент может быть активностью, службой или широковещательным приемником.

Если вы пишете программу просмотра изображений, вы должны добавить фильтр намерения (или несколько) в манифест, описывающий изображения, с которыми вы можете работать. Если вы пишете файловый браузер, вы можете упаковать детали файла изображения в намерение, и система будет просеивать фильтры намерений, пока не найдет наилучшее соответствие для обработки этого изображения. То же самое касается любого типа данных или услуг, которые могут передаваться от одного компонента к другому.

4
ответ дан 30 November 2019 в 03:28
поделиться

Проще говоря, фильтры намерений - это способ сообщить ОС, как запускать / взаимодействовать с различными действиями / службами / широковещательными приемниками в вашем приложении. Так, например, если вы хотите, чтобы ссылки, начинающиеся с http://www.mycompany.com , приводили людей в ваше приложение, фильтр намерений - это способ сделать это. После его настройки каждый раз, когда кто-то нажимает на ссылку, которая начинается с этого (в любом приложении), пользователю будет предоставлена ​​возможность использовать ваше приложение для просмотра этой страницы. Вы, наверное, видели это с URL-адресами YouTube. Точно так же, если вы хотите, чтобы ссылка «поделиться», обычно встречающаяся во многих приложениях, отображала ваше приложение, для этого следует использовать фильтр намерений.

надеюсь, что это поможет ...

5
ответ дан 30 November 2019 в 03:28
поделиться

IntentFilters используются для объявления шаблона атрибутов Intent, на которые будет отвечать объявляющий компонент. Вы можете указать с помощью IntentFilter, что данное Activity, Service или BroadcastReceiver будет реагировать на комбинацию действия, типа пантомимы данных, схемы, пути и т. Д. Например, если вы регистрируете Activity в IntentFilter для ACTION_SEND с типом данных "text / plain" ", ваше действие будет вызываться каждый раз, когда пользователи хотят отправить текст.

3
ответ дан 30 November 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: