【问题标题】:What does an IntentFilter do?IntentFilter 有什么作用?
【发布时间】:2010-07-30 16:07:58
【问题描述】:

我不太明白 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>

&lt;action&gt;&lt;category&gt; 标签有什么作用?说如果我声明:

<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?

【问题讨论】:

标签: android android-intent intentfilter


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多