Что такое интенсивные фильтры?

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

Поэтому, пожалуйста, если кто-нибудь может объяснить мне с четким примером, какова роль фильтров намерения?

благодаря

Solutions Collecting From Web of "Что такое интенсивные фильтры?"

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

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

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

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

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

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

надеюсь это поможет…

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

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

IntentFilters рекламируют возможности компонента и ограничивают намерения, которые могут обрабатывать. IntentFilter, что данный Activity, Service или BroadcastReceiver будет реагировать на комбинацию действий, тип mime данных, схему, путь и т. Д.

Цель состоит в том, чтобы сравнить фильтры намерения с намерениями на основе трех аспектов:

1: – действие намерения
2: – Данные о намерениях (как URI, так и тип данных)
3: – категория намерений

Действие:
Объявляет принятое действие намерения в атрибуте name. Значение должно быть буквальным строковым значением действия, а не константой класса.

данные :
Объявляет тип принятых данных с использованием одного или нескольких атрибутов, которые определяют различные аспекты URI данных (схема, хост, порт, путь и т. Д.) И тип MIME.

Категория:
Объявляет принятую категорию цели в атрибуте name. Значение должно быть буквальным строковым значением действия, а не константой класса.

Например, эта активность обрабатывает действия «ОТПРАВИТЬ» с текстовыми данными.

<intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain"/> </intent-filter> 

Intent Filters – это способ сообщить OS, что позволяет мне обрабатывать / предоставлять такие виды деятельности / услуги

Добавляя данный фильтр в Manifest, OS указывает, что я также могу обрабатывать сервис Sms, и всякий раз, когда вы отправляете sms, он будет отображаться в списке, или вы также можете явно использовать это как свою sms-службу.

 <intent-filter> <action android:name="android.intent.action.SENDTO" /> <action android:name="com.example.code.SMS_INTENT" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="smsto" /> </intent-filter> 

И чтобы явно использовать эту услугу, назовите ее …

  Intent intent = new Intent("com.example.code.SMS_INTENT", Uri.parse(uri)); intent.putExtra("from", "code"); startActivity(intent); 

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

Intent-фильтр сообщает системе андроида, для которой намерение или событие должны прослушиваться компоненты Android (активность, услуга, радиоприемник).

Часть фильтра намерений в файле манифеста Android сообщает операционной среде Android, что это действие должно быть зарегистрировано в качестве возможной точки входа в приложение и доступно в пусковой установке системы Android.