2010-07-30 2 views
2

Я не совсем понимаю, что делает IntentFilter? Вот пример манифеста:Что делает IntentFilter?

<activity android:name="SomeActivity" android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Что означает <action> и <category> теги делать? Скажем, заявляю ли я:

<activity android:name="AnotherActivity" android:label="AnotherActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.PICK" /> 
     <action android:name="android.intent.action.VIEW" /> 
     <action android:name="android.intent.action.INSERT" /> 
    </intent-filter> 
</activity> 

Это что-то даже делает, если используется в сочетании с объектом Intent? Пожалуйста, помогите мне понять IntentFilter?

+0

Смотрите документацию [здесь] (http://developer.android.com/guide/topics/intents/intents-filters.html) и [здесь ] (http://developer.android.com/reference/android/content/IntentFilter.html). – QRohlf

ответ

3

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

Фильтр намерений является экземпляром класса IntentFilter. Однако, поскольку система Android должна знать о возможностях компонента, прежде чем он сможет запустить этот компонент, фильтры намерений, как правило, не настроены в коде Java, а в файле манифеста приложения (AndroidManifest.xml) в качестве элементов.

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

Для получения дополнительной информации о Intent-Filter см это Android Developer - Intent Filters Page