Подтвердить что ты не робот

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

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

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

спасибо

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

Целью сравнения сопоставления намерений с намерениями на основе трех аспекты:

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

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

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

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

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

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

Ответ 5

Intent Filters - это способ сообщить 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);

Ответ 6

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

Ответ 7

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

Ответ 8

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