`
enki_ding
  • 浏览: 210539 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Activity 的 Intent Filter

阅读更多

Intent Filter 描述了一个组件愿意接收什么样的 Intent 对象,Android 将其抽象为 android.content.IntentFilter 类。在 Android 的 AndroidManifest.xml 配置文件中可以通过 <intent-filter > 节点为一个 Activity 指定其 Intent Filter,以便告诉系统该 Activity 可以响应什么类型的 Intent。

当程序员使用 startActivity(intent) 来启动另外一个 Activity 时,如果直接指定 intent 了对象的 Component 属性,那么 Activity Manager 将试图启动其 Component 属性指定的 Activity。否则 Android 将通过 Intent 的其它属性从安装在系统中的所有 Activity 中查找与之最匹配的一个启动,如果没有找到合适的 Activity,应用程序会得到一个系统抛出的异常。这个匹配的过程如下:


图 4. Activity 种 Intent Filter 的匹配过程
图 4. Activity 种 Intent Filter 的匹配过程

Action 匹配

Action 是一个用户定义的字符串,用于描述一个 Android 应用程序组件,一个 Intent Filter 可以包含多个 Action。在 AndroidManifest.xml 的 Activity 定义时可以在其 <intent-filter > 节点指定一个 Action 列表用于标示 Activity 所能接受的“动作”,例如:

 <intent-filter > 
 <action android:name="android.intent.action.MAIN" /> 
 <action android:name="com.zy.myaction" /> 
……
 </intent-filter> 

 

如果我们在启动一个 Activity 时使用这样的 Intent 对象:

 Intent intent =new Intent(); 
 intent.setAction("com.zy.myaction"); 

 

那么所有的 Action 列表中包含了“com.zy.myaction ”的 Activity 都将会匹配成功。

Android 预定义了一系列的 Action 分别表示特定的系统动作。这些 Action 通过常量的方式定义在 android.content. Intent 中,以“ACTION_ ”开头。我们可以在 Android 提供的文档中找到它们的详细说明。

URI 数据匹配

一个 Intent 可以通过 URI 携带外部数据给目标组件。在 <intent-filter > 节点中,通过 <data/> 节点匹配外部数据。

mimeType 属性指定携带外部数据的数据类型,scheme 指定协议,host、port、path 指定数据的位置、端口、和路径。如下:

 <data android:mimeType="mimeType" android:scheme="scheme" 
 android:host="host" android:port="port" android:path="path"/> 

 

如果在 Intent Filter 中指定了这些属性,那么只有所有的属性都匹配成功时 URI 数据匹配才会成功。

Category 类别匹配

<intent-filter > 节点中可以为组件定义一个 Category 类别列表,当 Intent 中包含这个列表的所有项目时 Category 类别匹配才会成功。

 

来自:http://www.ibm.com/developerworks/cn/opensource/os-cn-android-actvt/

分享到:
评论

相关推荐

    Android Intent Filter用法

    在Android应用开发中,Intent Filter是一个至关重要的概念,它用于定义一个组件(如Activity或BroadcastReceiver)能够响应的Intent类型。Intent Filter就像一个过滤器,筛选出应用可以处理的特定操作,使得系统能够...

    Activity_intent-filter

    当我们说到 "Activity_intent-filter" 时,我们实际上是在讨论如何通过设置 `intent-filter` 来使一个 `Activity` 对特定的 `Intent` 响应。 `Intent` 是Android中的一个消息传递对象,用于在组件之间传递请求或...

    使用Intent filter来实现不同应用中Activity的相互跳转

    使用Intent filter来实现不同应用中Activity的相互跳转,点击A应用中的Activity,就跳转到B应用中的Activity,这种方式可以实现从一个应用的Activity 跳转到另一个应用的Activity,它们之间还可以传递数据。

    Data、Type属性与Intent-filter配置

    在给定的标题“Data、Type属性与Intent-filter配置”中,我们关注的重点是如何通过设置`data`和`type`属性来过滤Intent,以便指定的应用组件(如Activity)能够响应特定的用户操作或系统事件。 `data`属性在Intent-...

    Intents 和Intent filter 理论介绍

    【Intent 和 Intent Filter 理论介绍】 Intent 在 Android 开发中扮演着至关重要的角色,它是应用程序组件间通信的关键机制,使得组件之间可以实现松散耦合的交互。Intent 不仅仅用于启动另一个 Activity,还可以...

    Android activity intent 相关Java源代码

    在Android应用开发中,Activity是Android系统中的一个核心组件,它是用户界面的载体,而Intent则是连接各个Activity的桥梁,用于传递数据和启动其他组件。Intent不仅用于启动Activity,还能启动Service、...

    Activity之间的Intent跳转

    针对隐式Intent,需要在AndroidManifest.xml中为Activity定义Intent Filter,声明能处理的Action、Data、Category等,以便系统能够找到合适的Activity响应隐式Intent。 综上所述,Intent在Android开发中起着核心...

    Android开发 两个Activity之间通过Intent跳转传值

    在Android应用开发中,Intent是连接应用程序组件的重要桥梁,它被用来启动新的Activity或Service,也可以传递数据。本文将深入探讨如何在两个Activity之间通过Intent进行数据传递。 首先,理解Intent的基本概念。...

    Activity与Intent

    3. **Intent-filter**:Activity可以通过定义Intent-filter来响应特定类型的Intent请求,比如启动一个用于选择图片的Activity就需要声明ACTION_PICK这个Intent-filter。 4. **回退栈**:每个Activity都位于一个任务...

    显示Intent和隐式Intent启动Activity的示例

    当使用隐式Intent时,目标Activity需要设置Intent Filter来表明它可以响应哪种类型的Intent。在AndroidManifest.xml中定义Intent Filter如下: ```xml &lt;activity android:name=".TargetActivity"&gt; &lt;intent-...

    Android提高第四篇之Activity+Intent.docx

    在Android应用开发中,Activity和Intent是两个至关重要的概念,它们构成了Android应用程序的基本骨架。Activity作为用户界面的主要载体,Intent则是连接各个组件的桥梁,负责传递消息和启动操作。 Activity的生命...

    ex07_activity_intent.rar_Intent_android

    "ex07_activity_intent"这个压缩包文件很可能包含了一系列关于Android中Intent使用的教程或示例代码,让我们来深入探讨Intent的概念、类型以及如何在实际应用中使用它。 1. **Intent的概念**: Intent是一个对象,...

    Intent的Activity转向

    Intent的Activity转向是Android系统中一个核心的概念,它允许应用程序从一个Activity跳转到另一个Activity,实现界面间的交互和数据传递。这里我们将深入探讨Intent的创建、类型以及如何在Activity之间进行切换。 1...

    Intent的多种用法

    Intent Filter是组件(如Activity或BroadcastReceiver)声明它们可以处理的Intent类型。在AndroidManifest.xml中定义Intent Filter,包括Action、Data和Category。例如,如果你的Activity希望接收并处理HTTP链接,你...

    显式和隐式、过滤器intent的使用

    Intent Filter是组件(如Activity或BroadcastReceiver)在清单文件中声明的一种机制,用于声明它们能响应什么样的隐式Intent。例如,如果一个Activity想要处理图片,它会在清单文件中添加如下过滤器: ```xml ...

    Intent——把两个Activity关联起来!

    5. Intent Filter:为了让其他应用能识别隐式Intent,目标Activity需要在清单文件(AndroidManifest.xml)中定义Intent Filter,声明它能处理的Action、Data、Category等。 ```xml &lt;activity android:name="....

    android中隐式intent与activity的匹配原则2022优秀文档.pptx

    如果Intent请求的Action和&lt;intent-filter&gt;中的任意一个&action子标签匹配,那么该Intent就可以激活该Activity。 此外,&lt;intent-filter&gt;标签还可以包含category子标签,用于指定当前动作(Action)被执行的环境。...

    android中使用隐式intent完成应用的步骤及核心代码2022优秀文档.pptx

    4. 启动 Activity:使用隐式 Intent 启动 Activity,Android 系统将根据 Intent 的请求内容和 Intent Filter 比较,找到匹配的 Activity。 核心代码: 在 MainActivity 中: ```java Intent intent = new Intent()...

Global site tag (gtag.js) - Google Analytics