IntentFilter做什么?

时间:2010-07-30 16:07:59

标签: android android-intent 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?

1 个答案:

答案 0 :(得分:4)

要通知系统他们可以处理哪些隐含意图,活动,服务和广播接收器可以有一个或多个意图过滤器 。每个过滤器都描述了组件的功能,即组件愿意接收的一组意图。

意图过滤器是 IntentFilter类的实例。但是,由于Android系统在启动该组件之前必须了解组件的功能,因此通常不会在Java代码中设置intent过滤器,而是在应用程序的清单文件(AndroidManifest.xml)中将其设置为元素。

过滤器具有与Intent对象的操作,数据和类别字段并行的字段。在所有三个区域中针对过滤器测试隐式意图。要传递给拥有过滤器的组件,它必须通过所有三个测试。如果它甚至其中一个失败,Android系统将不会将其传递给组件 - 至少不是基于该过滤器。但是,由于组件可以具有多个intent过滤器,因此不通过组件过滤器之一的intent可能会在另一个过滤器上完成。

有关Intent-Filter的更多信息,请参阅此 Android Developer - Intent Filters Page