android - IntentFilter 的作用是什么?

标签 android android-intent intentfilter

不太明白IntentFilter的作用是什么?以下是 list 示例:

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

最佳答案

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

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

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

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

关于android - IntentFilter 的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3373289/

相关文章:

android - 应用选择器 Intent 没有出现在 Android 模拟器中

android - 如何以编程方式创建/禁用 intent-filter?

android - 如何将自定义 Intent 过滤器注册到 AndroidManifest.xml 中的广播接收器?

java - 如何读取php代码对android java代码的响应

安卓应用隐私政策

android - 想打开 whatsapp 与 android 应用程序中未保存的联系电话聊天

java - 安卓、Java : Share a dialog

android - 添加firebase firestore依赖后的"A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade"

android - 在android中使用图像按钮设计如下图所示的布局

android - 管理android的backstack