Reference/android/content/Intent
From Android中文网
android.content 公有类
目录 |
[编辑] android.content.Intent
java.lang.Object android.content.Intent Parcelable
[编辑] Intent 介绍
Intent是对被执行操作的抽象描述。调用 startActivity(Intent),可以启动 Activity;调用 broadcastIntent(Intent),可以把 Intent 发送给任何相关的 IntentReceiver 组件;调用 startService(Intent, Bundle) 以及 bindService(Intent, String, ServiceConnection, int) 可以让应用和后台服务进行通信。
Intent 提供了一个在不同应用的代码之间进行晚绑定 (late runtime binding) 的机制。它主要被用来启动 Activities,因此可以被看作是 Activities 之间的粘合剂。Intent 大体上是一个被动数据结构,该数据结构包括被执行动作的抽象描述。Intent 中的主要内容有:
- action -- 需要被执行的动作。比如 VIEW_ACTION, EDIT_ACTION, MAIN_ACTION 等。
- data -- 执行动作要操作的数据,在 Intent 里用指向数据记录的URI (ContentURI) 表示。比如联系人数据库中的一个联系人记录。
译注:
被动数据结构:只能由外部线程或者进程改变的数据结构。与能够通过相关的线程或者进程执行内部操作从而产生外部行为的主动数据结构相对应。
下面是一些 action/data 对的例子:
- VIEW_ACTION content://contacts/1 -- 显示标识符为"1"的联系人的信息。
- EDIT_ACTION content://contacts/1 -- 编辑标识符为"1"的联系人的信息。
- VIEW_ACTION content://contacts/ -- 显示可遍历的联系人列表。这是用来进入联系人应用主界面(顶级入口,top-level entry)的典型方法。在这个界面中察看某个联系人会产生一个新的 Intent:{VIEW_ACTION content://contacts/N},用来启动新的Activity,显示该联系人的详细信息。
- PICK_ACTION content://contacts/ -- 先是可遍历的联系人列表,并且允许用户在列表中选择一个联系人,然后把这个联系人返回给"上级活动"(parent activity)。例如:电子邮件客户端可以使用这个 Intent,要求用户在联系人列表中选择一个联系人。
除了 action, data 两个主要属性,Intent 还具有一些其它属性,这些属性也可以被用在Intent 里:
- category -- 类别,被执行动作的附加信息。例如 LAUNCHER_CATEGORY 表示Intent 的接受者应该在 Launcher 中作为顶级应用出现;而 ALTERNATIVE_CATEGORY 表示当前的 Intent 是一系列的可选动作中的一个,这些动作可以在同一块数据上执行。
- type -- 数据类型,显式指定 Intent 的数据类型 (MIME)。一般上 Intent 的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。
- component -- 组件,为使用 Intent 的组件类指定名称。通常会根据 Intent 中包含的其它信息 —— 比如 action, data/type, categories —— 进行查找,最终找到一个与之匹配的组件。如果这个属性存在的话,将直接使用它指定的组件,不再执行上述查找过程。指定了这个属性以后,Intent 的其它所有属性都是可选的。
- extras -- 额外的附加信息,是其它所有附加信息的集合。使用 extras 可以为组件提供扩展信息,比如,如果要发送电子邮件,也就是要执行“发送电子邮件”的动作,可以将电子邮件的标题、正文等保存在 extras 里。
在 Intent 类里定义了多种标准 action 和 category 常量(字符串),同时应用也可以根据自己的需要进行定义。这些字符串使用 JAVA 风格的 scoping,从而保证它们的唯一性。比如标准 VIEW_ACTION 的定义是 “android.app.action.VIEW”。
概括而言,“动作”、“数据类型”、“类别”(译注:Intent的action类型)和“附加数据”一起形成了一种语言。这种语言使得系统能够理解诸如“打john的手机”之类的短语。随着应用不断的加入到系统中,它们可以添加新的“动作”、“数据类型”、“类别”来扩展这种语言。应用也可以提供自己的 activities 来处理已经存在的“短语”,从而改变这些“短语”的行为。
[编辑] Intent 解析
Intent 有两种主要形式:
- 显式意图(直接意图?)。显式意图是指定了 component 属性的 intents。调用 setComponent(ComponentName) 或者 setClass(Context, Class) 可以为 intents 设定 component 属性 —— 指定具体的组件类。这些 intents 一般不包括包括其它任何信息,它们通常只是用来通知应用启动内部的 activities 作为该应用的(当前)用户界面。
- 隐式意图(含蓄意图?)。隐式意图是没有指明 comonent 的 intents。这些 intents 必须包括足够的信息,这样系统才能确定在所有的可用组件中,对一个 intent 来说运行哪一个组件才是最合适的。
在使用 implicit intents 的时候,对于一个任意的 intent,我们需要知道用它来做什么。“Intent 解析过程”用来处理这个问题。“Intent 解析过程”将 intent 映射到可以处理它的 activity, IntentReceiver 或者 service。
Intent 解析机制主要是将已安装应用程序包里的 Intent-Filter 描述和 Intent 进行匹配。如果使用广播发送 Intent,还要在已经注册的 IntentReceiver 中尽心匹配。更多的相关描述可以在 IntentFilter 中找到。
在解析 Intent 的过程中要用到 Intent 的三个属性:动作、数据类型和类别。使用这些属性,就可以 PackageManager 上查询能够处理当前 intent 的合适组件。组件是否合适由 AndroidManifest.xml 文件中提供的 intent 信息决定。判断的方法如下:
The action, if given, must be listed by the component as one it handles.
- 如果 intent 指明了要执行的 action,组件 action 列表中就必须包含着个 action,否则不能匹配;
- 如果 Intent 没有提供数据类型 (type),系统从数据 (data) 中得到数据类型。和 action 一样,组件的数据类型列表中必须包含 intent 的数据类型,否则不能匹配。
- 如果 Intent 中的数据不是 content: 类型的 URL,而且 Intent 也没有明确指定它的数据类型,将根据 Intent 中数据的 scheme (比如 http: or mailto:) 进行匹配。同上,Intent 的 scheme 必须出现在组件的 scheme 列表中。
- 如果 Intent 指定了一个或多个类别,这些类别必须全部出现在组建的类别列表中。比如 intent 中包含了两个类别:LAUNCHER_CATEGORY 和 ALTERNATIVE_CATEGORY,解析得到的组件必须至少包含这两个类别。
以一个应用实例作为例子,这个应用可以让用户浏览便笺列表、查看每一个便笺的详细信息:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.android.notepad"> <application android:icon="@drawable/app_notes" android:label="@string/app_name"> <provider class="NotePadProvider" android:authorities="com.google.provider.NotePad" /> <activity class=".NotesList" android:label="@string/title_notes_list"> <intent-filter> <action android:value="android.intent.action.MAIN" /> <category android:value="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:value="android.intent.action.VIEW" /> <action android:value="android.intent.action.EDIT" /> <action android:value="android.intent.action.PICK" /> <category android:value="android.intent.category.DEFAULT" /> <type android:value="vnd.android.cursor.dir/vnd.google.note" /> </intent-filter> <intent-filter> <action android:value="android.intent.action.GET_CONTENT" /> <category android:value="android.intent.category.DEFAULT" /> <type android:value="vnd.android.cursor.item/vnd.google.note" /> </intent-filter> </activity> <activity class=".NoteEditor" android:label="@string/title_note"> <intent-filter android:label="@string/resolve_edit"> <action android:value="android.intent.action.VIEW" /> <action android:value="android.intent.action.EDIT" /> <category android:value="android.intent.category.DEFAULT" /> <type android:value="vnd.android.cursor.item/vnd.google.note" /> </intent-filter> <intent-filter> <action android:value="android.intent.action.INSERT" /> <category android:value="android.intent.category.DEFAULT" /> <type android:value="vnd.android.cursor.dir/vnd.google.note" /> </intent-filter> </activity> <activity class=".TitleEditor" android:label="@string/title_edit_title" android:theme="@android:style/Theme.Dialog"> <intent-filter android:label="@string/resolve_title"> <action android:value="com.google.android.notepad.action.EDIT_TITLE" /> <category android:value="android.intent.category.DEFAULT" /> <category android:value="android.intent.category.ALTERNATIVE" /> <category android:value="android.intent.category.SELECTED_ALTERNATIVE" /> <type android:value="vnd.android.cursor.item/vnd.google.note" /> </intent-filter> </activity> </application> </manifest>
例子中的第一个 activity 是 com.google.android.notepad.NotesList。它是进入应用的主入口(main entry),具有三种功能,分别由三个 intent 模板进行描述。
- 第一个功能是进入便笺应用的顶级入口。它的类型是 android.app.category.LAUNCHER,说明这个应用应该在 Launcher 中被列出。
- 第二个功能用来浏览可用的便笺,或者让用户选择一个特定的便笺并且把这个便笺返回给调用者。当数据类型是 vnd.android.cursor.dir/vnd.google.note (便笺记录的目录) 的时候,执行动作 android.app.action.VIEW 可以浏览可用的便笺;执行动作 android.app.action.PICK 可以让用户选择便笺。
- 第三个功能返回给调用者一个用户选择的便笺。当数据类型是 vnd.android.cursor.dir/vnd.google.note 的时候,执行动作 android.app.action.GET_COUTENT 调用者不需要知道
有了这些功能,就能够将下列 intents 匹配到 NotesList 的 activity:
- { action=android.app.action.MAIN }. 如果 activities 能够被用作进入应用的顶级入口,就可以和这个 intent 进行匹配。
- { action=android.app.action.MAIN, category=android.app.category.LAUNCHER }. 这是目前 Launcher 实际使用的 intent,构成了它的顶级列表。
问题:怎么构成??
- { action=android.app.action.VIEW data=content://com.google.provider.NotePad/notes }. 显示 "content://com.google.provider.NotePad/notes" 下所有便笺的列表,用户可以遍历这个列表,并且察看便笺的详情。
- { action=android.app.action.PICK data=content://com.google.provider.NotePad/notes }. 让用户在 "content://com.google.provider.NotePad/notes" 之下的便笺列表中选择一个,然后将这个便笺的 URL 返回给调用者。
- { action=android.app.action.GET_CONTENT type=vnd.android.cursor.item/vnd.google.note }. 这个 intent 和上面的 pick 动作类似,不同的是这个 intent 允许调用者(仅仅)指定它们需要的数据类型(,而不需要了解数据存放的详细位置,即数据的 URI)。系统根据这个数据类型选择恰当的 activity,然后让用户选择某些数据。
第二个 activity 是 com.google.android.notepad.NoteEditor,它为用户显示一个单独的便笺,并且允许用户对这个便笺进行修改。它具有两个 intent 模板,所以具有两个功能。第一个操作是主要的操作,允许用户察看和编辑一个便签(执行 android.app.action.VIEW 和 android.app.action.EDIT 动作,数据类型是 vnd.android.cursor.item/vnd.google.note)。第二个模板可以让调用者显示创建新便笺的用户界面,并且将新便笺插入到便笺列表中(执行 android.app.action.INSERT 动作,数据类型是 vnd.android.cursor.dir/vnd.google.note)。
有了这两个功能,下列 intents 就能够匹配到 NotesList 的 activity:
- { action=android.app.action.VIEW data=content://com.google.provider.NotePad/notes/{ID} } 向用户显示标识为 ID 的便笺。将标识为 ID 的便笺缩写为 note{ID},下同。
- { action=android.app.action.EDIT data=content://com.google.provider.NotePad/notes/{ID} } 让用户能够编辑 notes{ID}。
- { action=android.app.action.INSERT data=content://com.google.provider.NotePad/notes } 创建一个新的便笺,新便笺被创建在“content://com.google.provider.NotePad/notes”所表示的便笺列表中。用户可以编辑这个便签。当用户保存这个便笺后,这个新便笺的 URI 将会返回给调用者。
最后一个 activity 是 com.google.android.notepad.TitleEditor,它可以让用户编辑便笺的标题。它可以被实现为一个类,在 intent 中明确设定 component 属性后,应用可以直接调用这个类;不过在这里我们展示的是如何在已有数据上发布可选操作。这个 activity 只有一个单独的 intent 模板,它具有一个私有 action: com.google.android.notepad.action.EDIT_TITLE,允许用户编辑便笺的标题。和前面的 view 和 edit 动作一样,调用这个 intent 的时候,也必须指定具体的便笺。不一样的是,这里显示和编辑的只是便笺数据中的标题。
除了支持确省类别 (default category, android.intent.category.DEFAULT,原文是 android.intent.category.VIEW,有误),标题编辑器还支持另外两个标准类别:android.intent.category.ALTERNATIVE 和 android.intent.category.SELECTED_ALTERNATIVE。实现了这两个类别之后,其它 activities 可以调用函数 queryIntentActivityOptions(ComponentName, Intent[], Intent, int) 查询这个 activity 支持的 actions,而不需要了解它的具体实现;或者调用 addIntentOptions(int, int, ComponentName, Intent[], Intent, int, Menu.Item[]) 建立动态菜单。需要说明的是,这个 intent 模板有一个明确的名称(通过 android:label="@string/resolve_title" 指定)。在用户浏览数据的时候,如果这个 activity 是数据的一个可选操作,指定明确的名称可以为用户提供一个更好控制界面。
有了这个功能,下列 intents 就能够匹配到 NotesList 的 activity:
- { action=com.google.android.notepad.action.EDIT_TITLE data=content://com.google.provider.NotePad/notes/{ID} } 显示并且允许用户编辑 note{ID} 的标题。
[编辑] Activity 的标准动作 (Actions)
下面是 Intent 为启动 activities 定义的标准动作,一般使用 startActivity(Intent) 启动 activities。其中最重要也是最经常使用的是 MAIN_ACTION 和 EDIT_ACTION.
- MAIN_ACTION
- VIEW_ACTION
- EDIT_ACTION
- PICK_ACTION
- GET_CONTENT_ACTION
- DIAL_ACTION
- CALL_ACTION
- SENDTO_ACTION
- ANSWER_ACTION
- INSERT_ACTION
- DELETE_ACTION
- RUN_ACTION
- LOGIN_ACTION
- CLEAR_CREDENTIALS_ACTION
- SYNC_ACTION
- PICK_ACTIVITY_ACTION
- WEB_SEARCH_ACTION
[编辑] 标准的广播动作 (broadcase actions)
下面是 Intent 为接收广播而定义的动作。可以通过 registerReceiver(IntentReceiver, IntentFilter),或者在 manifest 中增加 receiver 标记来注册。
- TIME_TICK_ACTION
- TIME_CHANGED_ACTION
- TIMEZONE_CHANGED_ACTION
- BOOT_COMPLETED_ACTION
- PACKAGE_ADDED_ACTION
- PACKAGE_REMOVED_ACTION
- BATTERY_CHANGED_ACTION
[编辑] 标准类别
下面是已定义的标准类别。通过 addCategory(String) 可以为 Intent 设置类别。
- DEFAULT_CATEGORY
- BROWSABLE_CATEGORY
- TAB_CATEGORY
- ALTERNATIVE_CATEGORY
- SELECTED_ALTERNATIVE_CATEGORY
- LAUNCHER_CATEGORY
- HOME_CATEGORY
- PREFERENCE_CATEGORY
- GADGET_CATEGORY
- TEST_CATEGORY
[编辑] 标准附加数据
下面是已定义的标准字段,用来在 putExtra(String, Object) 中为 Intent 设置附加数据。
- TEMPLATE_EXTRA
- INTENT_EXTRA
[编辑] 启动标记 (launch flags)
下面是 Intent 中可能用到的启动标记,通过 setLaunchFlags(int) 和 addLaunchFlags(int) 使用这些标记。
- NO_HISTORY_LAUNCH
- SINGLE_TOP_LAUNCH
- NEW_TASK_LAUNCH
- MULTIPLE_TASK_LAUNCH
- FORWARD_RESULT_LAUNCH
[编辑] 嵌套类
Intent.FilterComparison 持有一个 Intent 对象,并且为过滤实现了 Intent 的比较操作。
[编辑] 概要
[编辑] 常量
| String | ADD_SHORTCUT_ACTION | 动作:在系统中添加一个快捷方式。. | "android.intent.action.ADD_SHORTCUT" |
| String | ALL_APPS_ACTION | 动作:列举所有可用的应用。 输入:无。 | "android.intent.action.ALL_APPS" |
| String | ALTERNATIVE_CATEGORY | 类别:说明 activity 是用户正在浏览的数据的一个可选操作。 | "android.intent.category.ALTERNATIVE" |
| String | ANSWER_ACTION | 动作:处理拨入的电话。 | "android.intent.action.ANSWER" |
| String | BATTERY_CHANGED_ACTION | 广播:充电状态,或者电池的电量发生变化。 | "android.intent.action.BATTERY_CHANGED" |
| String | BOOT_COMPLETED_ACTION | 广播:在系统启动后,这个动作被广播一次(只有一次)。 | "android.intent.action.BOOT_COMPLETED" |
| String | BROWSABLE_CATEGORY | 类别:能够被浏览器安全使用的 activities 必须支持这个类别。 | "android.intent.category.BROWSABLE" |
| String | BUG_REPORT_ACTION | 动作:显示 activity 报告错误。 | "android.intent.action.BUG_REPORT" |
| String | CALL_ACTION | 动作:拨打电话,被呼叫的联系人在数据中指定。 | "android.intent.action.CALL" |
| String | CALL_FORWARDING_STATE_CHANGED_ACTION | 广播:语音电话的呼叫转移状态已经改变。 | "android.intent.action.CFF" |
| String | CLEAR_CREDENTIALS_ACTION | 动作:清除登陆凭证 (credential)。 | "android.intent.action.CLEAR_CREDENTIALS" |
| String | CONFIGURATION_CHANGED_ACTION | 广播:设备的配置信息已经改变,参见 Resources.Configuration. | "android.intent.action.CONFIGURATION_CHANGED" |
| Creator | CREATOR | 无 | 无 |
| String | DATA_ACTIVITY_STATE_CHANGED_ACTION | 广播:电话的数据活动(data activity)状态(即收发数据的状态)已经改变。 | "android.intent.action.DATA_ACTIVITY" |
| String | DATA_CONNECTION_STATE_CHANGED_ACTION | 广播:电话的数据连接状态已经改变。 | "android.intent.action.DATA_STATE" |
| String | DATE_CHANGED_ACTION | 广播:日期被改变。 | "android.intent.action.DATE_CHANGED" |
| String | DEFAULT_ACTION | 动作:和 VIEW_ACTION 相同,是在数据上执行的标准动作。 | "android.intent.action.VIEW" |
| String | DEFAULT_CATEGORY | 类别:如果 activity 是对数据执行确省动作(点击, center press)的一个选项,需要设置这个类别。 | "android.intent.category.DEFAULT" |
| String | DELETE_ACTION | 动作:从容器中删除给定的数据。 | "android.intent.action.DELETE" |
| String | DEVELOPMENT_PREFERENCE_CATEGORY | 类别:说明 activity 是一个设置面板 (development preference panel). | "android.intent.category.DEVELOPMENT_PREFERENCE" |
| String | DIAL_ACTION | 动作:拨打数据中指定的电话号码。 | "android.intent.action.DIAL" |
| String | EDIT_ACTION | 动作:为制定的数据显示可编辑界面。 | "android.intent.action.EDIT" |
| String | EMBED_CATEGORY | 类别:能够在上级(父)activity 中运行。 | "android.intent.category.EMBED" |
| String | EMERGENCY_DIAL_ACTION | 动作:拨打紧急电话号码。 | "android.intent.action.EMERGENCY_DIAL" |
| int | FORWARD_RESULT_LAUNCH | 启动标记:如果这个标记被设置,而且被一个已经存在的 activity 用来启动新的 activity,已有 activity 的回复目标 (reply target) 会被转移给新的 activity。 | 16 0x00000010 |
| String | FOTA_CANCEL_ACTION | 广播:取消所有被挂起的 (pending) 更新下载。 | "android.server.checkin.FOTA_CANCEL" |
| String | FOTA_INSTALL_ACTION | 广播:更新已经被确认,马上就要开始安装。 | "android.server.checkin.FOTA_INSTALL" |
| String | FOTA_READY_ACTION | 广播:更新已经被下载,可以开始安装。 | "android.server.checkin.FOTA_READY" |
| String | FOTA_RESTART_ACTION | 广播:恢复已经停止的更新下载。 | "android.server.checkin.FOTA_RESTART" |
| String | FOTA_UPDATE_ACTION | 广播:通过 OTA 下载并安装操作系统更新。 | "android.server.checkin.FOTA_UPDATE" |
| String | FRAMEWORK_INSTRUMENTATION_TEST_CATEGORY | 类别:To be used as code under test for framework instrumentation tests. | "android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" |
| String | GADGET_CATEGORY | 类别:这个 activity 可以被嵌入宿主 activity (activity that is hosting gadgets)。 | "android.intent.category.GADGET" |
| String | GET_CONTENT_ACTION | 动作:让用户选择数据并返回。 | "android.intent.action.GET_CONTENT" |
| String | HOME_CATEGORY | 类别:主屏幕 (activity),设备启动后显示的第一个 activity。 | "android.intent.category.HOME" |
| String | INSERT_ACTION | 动作:在容器中插入一个空项 (item)。 | "android.intent.action.INSERT" |
| String | INTENT_EXTRA | 附加数据:和 PICK_ACTIVITY_ACTION 一起使用时,说明用户选择的用来显示的 activity;和 ADD_SHORTCUT_ACTION 一起使用的时候,描述要添加的快捷方式。 | "android.intent.extra.INTENT" |
| String | LABEL_EXTRA | 附加数据:大写字母开头的字符标签,和 ADD_SHORTCUT_ACTION 一起使用。 | "android.intent.extra.LABEL" |
| String | LAUNCHER_CATEGORY | 类别:Activity 应该被显示在顶级的 launcher 中。 | "android.intent.category.LAUNCHER" |
| String | LOGIN_ACTION | 动作:获取登录凭证。 | "android.intent.action.LOGIN" |
| String | MAIN_ACTION | 动作:作为主入口点启动,不需要数据。 | "android.intent.action.MAIN" |
| String | MEDIABUTTON_ACTION | 广播:用户按下了“Media Button”。 | "android.intent.action.MEDIABUTTON" |
| String | MEDIA_BAD_REMOVAL_ACTION | 广播:扩展介质(扩展卡)已经从 SD 卡插槽拔出,但是挂载点 (mount point) 还没解除 (unmount)。 | "android.intent.action.MEDIA_BAD_REMOVAL" |
| String | MEDIA_EJECT_ACTION | 广播:用户想要移除扩展介质(拔掉扩展卡)。 | "android.intent.action.MEDIA_EJECT" |
| String | MEDIA_MOUNTED_ACTION | 广播:扩展介质被插入,而且已经被挂载。 | "android.intent.action.MEDIA_MOUNTED" |
| String | MEDIA_REMOVED_ACTION | 广播:扩展介质被移除。 | "android.intent.action.MEDIA_REMOVED" |
| String | MEDIA_SCANNER_FINISHED_ACTION | 广播:已经扫描完介质的一个目录。 | "android.intent.action.MEDIA_SCANNER_FINISHED" |
| String | MEDIA_SCANNER_STARTED_ACTION | 广播:开始扫描介质的一个目录。 | "android.intent.action.MEDIA_SCANNER_STARTED" |
| String | MEDIA_SHARED_ACTION | 广播:扩展介质的挂载被解除 (unmount),因为它已经作为 USB 大容量存储被共享。 | "android.intent.action.MEDIA_SHARED" |
| String | MEDIA_UNMOUNTED_ACTION | 广播:扩展介质存在,但是还没有被挂载 (mount)。 | "android.intent.action.MEDIA_UNMOUNTED" |
| String | MESSAGE_WAITING_STATE_CHANGED_ACTION | 广播:电话的消息等待(语音邮件)状态已经改变。 | "android.intent.action.MWI" |
| int | MULTIPLE_TASK_LAUNCH | 启动标记:和 NEW_TASK_LAUNCH 联合使用,禁止将已有的任务改变为前景任务 (foreground)。 | 8 0x00000008 |
| String | NETWORK_TICKLE_RECEIVED_ACTION | 广播:设备收到了新的网络 "tickle" 通知。 | "android.intent.action.NETWORK_TICKLE_RECEIVED" |
| int | NEW_TASK_LAUNCH | 启动标记:设置以后,activity 将成为历史堆栈中的第一个新任务(栈顶)。 | 4 0x00000004 |
| int | NO_HISTORY_LAUNCH | 启动标记:设置以后,新的 activity 不会被保存在历史堆栈中。 | 1 0x00000001 |
| String | PACKAGE_ADDED_ACTION | 广播:设备上新安装了一个应用程序包。 | "android.intent.action.PACKAGE_ADDED" |
| String | PACKAGE_REMOVED_ACTION | 广播:设备上删除了一个应用程序包。 | "android.intent.action.PACKAGE_REMOVED" |
| String | PHONE_STATE_CHANGED_ACTION | 广播:电话状态已经改变。 | "android.intent.action.PHONE_STATE" |
| String | PICK_ACTION | 动作:从数据中选择一个项目 (item),将被选中的项目返回。 | "android.intent.action.PICK" |
| String | PICK_ACTIVITY_ACTION | 动作:选择一个 activity,返回被选择的 activity 的类(名)。 | "android.intent.action.PICK_ACTIVITY" |
| String | PREFERENCE_CATEGORY | 类别:activity是一个设置面板 (preference panel)。 | "android.intent.category.PREFERENCE" |
| String | PROVIDER_CHANGED_ACTION | 广播:更新将要(真正)被安装。 | "android.intent.action.PROVIDER_CHANGED" |
| String | PROVISIONING_CHECK_ACTION | 广播:要求 polling of provisioning service 下载最新的设置。 | "android.intent.action.PROVISIONING_CHECK" |
| String | RUN_ACTION | 动作:运行数据(指定的应用),无论它(应用)是什么。 | "android.intent.action.RUN" |
| String | SAMPLE_CODE_CATEGORY | 类别:To be used as an sample code example (not part of the normal user experience). | "android.intent.category.SAMPLE_CODE" |
| String | SCREEN_OFF_ACTION | 广播:屏幕被关闭。 | "android.intent.action.SCREEN_OFF" |
| String | SCREEN_ON_ACTION | 广播:屏幕已经被打开。 | "android.intent.action.SCREEN_ON" |
| String | SELECTED_ALTERNATIVE_CATEGORY | 类别:对于被用户选中的数据,activity 是它的一个可选操作。 | "android.intent.category.SELECTED_ALTERNATIVE" |
| String | SENDTO_ACTION | 动作:向 data 指定的接收者发送一个消息。 | "android.intent.action.SENDTO" |
| String | SERVICE_STATE_CHANGED_ACTION | 广播:电话服务的状态已经改变。 | "android.intent.action.SERVICE_STATE" |
| String | SETTINGS_ACTION | 动作:显示系统设置。输入:无。 | "android.intent.action.SETTINGS" |
| String | SIGNAL_STRENGTH_CHANGED_ACTION | 广播:电话的信号强度已经改变。 | "android.intent.action.SIG_STR" |
| int | SINGLE_TOP_LAUNCH | 启动标记:设置以后,如果 activity 已经启动,而且位于历史堆栈的顶端,将不再启动(不重新启动) activity。 | 2 0x00000002 |
| String | STATISTICS_REPORT_ACTION | 广播:要求 receivers 报告自己的统计信息。 | "android.intent.action.STATISTICS_REPORT" |
| String | STATISTICS_STATE_CHANGED_ACTION | 广播:统计信息服务的状态已经改变。 | "android.intent.action.STATISTICS_STATE_CHANGED" |
| String | SYNC_ACTION | 动作:执行数据同步。 | "android.intent.action.SYNC" |
| String | TAB_CATEGORY | 类别:这个 activity 应该在 TabActivity 中作为一个 tab 使用。 | "android.intent.category.TAB" |
| String | TEMPLATE_EXTRA | 附加数据:新记录的初始化模板。 | "android.intent.extra.TEMPLATE" |
| String | TEST_CATEGORY | 类别:作为测试目的使用,不是正常的用户体验的一部分。 | "android.intent.category.TEST" |
| String | TIMEZONE_CHANGED_ACTION | 广播:时区已经改变。 | "android.intent.action.TIMEZONE_CHANGED" |
| String | TIME_CHANGED_ACTION | 广播:时间已经改变(重新设置)。 | "android.intent.action.TIME_SET" |
| String | TIME_TICK_ACTION | 广播:当前时间已经变化(正常的时间流逝)。 | "android.intent.action.TIME_TICK" |
| String | UMS_CONNECTED_ACTION | 广播:设备进入 USB 大容量存储模式。 | "android.intent.action.UMS_CONNECTED" |
| String | UMS_DISCONNECTED_ACTION | 广播:设备从 USB 大容量存储模式退出。 | "android.intent.action.UMS_DISCONNECTED" |
| String | UNIT_TEST_CATEGORY | 类别:应该被用作单元测试(通过 test harness 运行)。 | "android.intent.category.UNIT_TEST" |
| String | VIEW_ACTION | 动作:向用户显示数据。 | "android.intent.action.VIEW" |
| String | WALLPAPER_CATEGORY | 类别:这个 activity 能过为设备设置墙纸。 | "android.intent.category.WALLPAPER" |
| String | WALLPAPER_CHANGED_ACTION | 广播:系统的墙纸已经改变。 | "android.intent.action.WALLPAPER_CHANGED" |
| String | WALLPAPER_SETTINGS_ACTION | 动作:显示选择墙纸的设置界面。输入:无。 | "android.intent.action.WALLPAPER_SETTINGS" |
| String | WEB_SEARCH_ACTION | 动作:执行 web 搜索。 | "android.intent.action.WEB_SEARCH" |
| String | XMPP_CONNECTED_ACTION | 广播:XMPP 连接已经被建立。 | "android.intent.action.XMPP_CONNECTED" |
| String | XMPP_DISCONNECTED_ACTION | 广播:XMPP 连接已经被断开。 | "android.intent.action.XMPP_DISCONNECTED" |
[编辑] 公共构造函数
| Intent() | 创建空的intent对象。 |
| Intent(Intent o) | 拷贝构造函数。 |
| Intent(String action) | 用指定的动作创建 intent 对象。 |
| Intent(String action, ContentURI uri) | 创建 intent 对象,指定动作和数据 (URI)。 |
| Intent(Context packageContext, Class cls) | 创建 intent 对象,指定 component。 |
| Intent(String action, ContentURI uri, Context packageContext, Class cls) | 创建 intent 对象,指定动作、数据和组件。 |
[编辑] 公共方法
| Intent addCategory(String category) | 向 intent 添加新的类别。 |
| Intent addLaunchFlags(int flags) | 向 intent 添加新的启动标记。 |
| boolean filterEquals(Intent other) | 判断两个 intent 是否相等:检查他们是否有完全相同的意图(用于过滤)。 |
| int filterHashCode() | 生成 intent 的哈希代码,该代码与 filterEquals 有同样的语义,即能用于进行 intent 比较。 |
| String getAction() | 获取 intent 要执行的动作,如:VIEW_ACTION。 |
| Set getCategories() | 获取 intent 对象所属的所有类别(集合)。 |
| ComponentName getComponent() | 获取 intent 关联的具体组件。 |
| ContentURI getData() | 获取 intent 对象要操作的数据 (URI)。 |
| Object getExtra(String name, Object def) | 获取 intent 的扩展数据。 |
| Object getExtra(String name) | 获取 intent 的扩展数据。 |
| Bundle getExtras() | 获取 intent 的扩展数据 map。 |
| static Intent getIntent(String uri) | 由 URI 创建 Intent。 |
| int getLaunchFlags() | 获取 intent 的所有启动标记。 |
| String getScheme() | 获取 intent 中数据的 sheme。 |
| String getType() | 获取 intent 明确声明的数据类型(显式声明的 MIME 类型,不是推导出来的类型)。 |
| boolean hasCategory(String category) | Intent 是否指定了类别。 |
| Intent putExtra(String name, Object value) | 向 intent 添加扩展数据。 |
| void putExtras(Intent src) | 将 src 中的所有扩展数据复制到 intent 中。 |
| void putExtras(Bundle extras) | 向 intent 添加扩展数据。 |
| void readFromParcel(Parcel in) | 无。 |
| void removeCategory(String category) | 从 intent 删除一个类别。 |
| void removeExtra(String name) | 从 intent 删除扩展数据。 |
| ComponentName resolveActivity(PackageManager pm) | 取得用来处理这个 intent 的 activity 组件。 |
| ActivityInfo resolveActivityInfo(PackageManager pm) | 取得用来处理这个 intent 的 activity 的信息 (PackageManager.ActivityInfo)。 |
| String resolveType(ContentResolver resolver) | 取得 intent 的 MIME 数据类型。(判断顺序:intent 明确指定的类型;intent 数据隐式包含的数据类型) |
| String resolveType(Context context) | 取得 intent 的 MIME 数据类型。(判断顺序:intent 明确指定的类型;intent 数据隐式包含的数据类型) |
| String resolveTypeIfNeeded(ContentResolver resolver) | 如果 resolver 需要,返回 intent 的数据类型,否则返回空。 |
| Intent setAction(String action) | 设置 intent 要执行的动作。 |
| Intent setClass(Context packageContext, Class cls) | 设置运行 intent 的组件,和 setComponent 功能相同。 |
| Intent setClassName(String packageName, String className) | 设置运行 intent 的组件,和 setComponent 功能相同。 |
| Intent setClassName(Context packageContext, String className) | 设置运行 intent 的组件,和 setComponent 功能相同。 |
| Intent setComponent(ComponentName component) | 设置运行 intent 的组件。 |
| Intent setData(ContentURI data) | 设置处理 intent 的时候要操作的数据。 |
| Intent setDataAndType(ContentURI data, String type) | 设置 intent 的数据和数据类型 (MIME)。 |
| Intent setLaunchFlags(int flags) | 设置启动标记(用来控制 intent 被处理的方式)。 |
| Intent setType(String type) | 设置明确的 MIME 数据类型。 |
| String toString() | 为 intent 生成一个可读的字符串描述。 |
| String toURI() | 无 |
| void writeToParcel(Parcel out) | 无 |
[编辑] 从 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
[编辑] 从 android.os.Parcelable 继承的方法
void writeToParcel(Parcel dest)
[编辑] Details
未完成...
