文章转自:http://hi.baidu.com/jazzy%C0%DA%C0%DA/blog/item/f48816d5efe3ec3507088bda.html

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,应用程序会得到一个系统抛出的异常。这个匹配的过程如下:

Activity 种 Intent Filter 的匹配过程

Android:Intent Filter 和 action 简介_第1张图片

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 类别匹配才会成功。



更多相关文章

  1. 整理:RelativeLayout的相关属性
  2. android ImageView android:adjustViewBounds属性的作用。
  3. 移动开发:Android数据连接浅析
  4. Android之EditText指定类型数据
  5. EditText的属性
  6. android笔记一 控件属性
  7. android客户端发送XML数据至服务器
  8. [Android] 启动无线与网络设置的Action___android:duplicatePare
  9. android中属性动画

随机推荐

  1. SQL如何实现MYSQL的递归查询
  2. sql server建库、建表、建约束技巧
  3. sql server 2000 数据库自动备份设置方法
  4. sql server创建临时表的两种写法和删除临
  5. 如何优化SQL语句(全)
  6. sql server 2000中禁止创建表(权限设置方
  7. 为什么我们需要在SQL Server里更新锁
  8. 简单介绍SQL Server里的闩锁
  9. 简单介绍SQL Server中的自旋锁
  10. sqlserver数据库优化解析(图文剖析)