StupidBeauty
Read times:1716Posted at: - no title specified

安卓19开发文档翻译:意图,Intent

继承 Object
实现 Parcelable Cloneable

类概述

意图, 是对即将进行的 个操作的抽象描述。 它可有以下用途:用在 startActivity 中,以启动一个 Activity ;用在 broadcastIntent 中,以将它发送到任何 对它感兴趣的 BroadcastReceiver 组件;用在 startService(Intent) bindService(Intent, ServiceConnection, int) 中,以与一个后台 Service 进行交互。

意图,提供的是一种在不同应用程序之间进行延迟运行时绑定的机制。对它最典型的用途就是用来启动活动,在这个用途中,它可认为是不同活动之间的胶水。本质上,它是一个被动的数据结构,其中储存着对于某个将要进行的动作的抽象描述。

开发者指南

知如何 创建及解析意图,则阅读 意图及意图过滤器 开发者指南。

意图结构

意图中包含的基本信息有:

以下是一些动作/数据对示例:

  • •. ACTION_VIEW content://contacts/people/1 —— 显示编号 为"1"的联系人的信息。

  • •. ACTION_DIAL content://contacts/people/1 —— 显示拨号 盘,并且填入指定用户的号码。

  • •. ACTION_VIEW tel:123 —— 显示拨号 盘,并且填入指定的号码。 注意感受一下,对于每个特定 的URI,VIEW 动作都会做出被认为是最适合的事。

  • •. ACTION_DIAL tel:123 —— 显示拨号 盘,并且填入指定的号码。

  • •. ACTION_EDIT content://contacts/people/1 —— 编辑编号 为"1"的联系人的信息。

  • •. ACTION_VIEW content://contacts/people/ —— 显示 联系人列表,供用户浏览。 一般会显示出 联系人 应用程序,以显示出联系人列表。 当用户选择要查看某个联系人时,会导致发出一个新的意图 { ACTION_VIEW content://contacts/N } ,以启动一个活动 来显示该联系人的信息。

除了这些主要属性之外,还有一些附加属性,妳可以在意图中包含它们:

  • •. category —— 对于 要执行的动作,给出额外的信息。例如 CATEGORY_LAUNCHER ,表示, 它应当作为一个顶级应用程序出现在 启动器 中; 而, CATEGORY_ALTERNATIVE ,表示,对于 某一砣数据,它应当被包含在一个替代动作列表里,供用户选择。

  • •. type—— 为该意图中的数据指定一个显式的类型(一个多媒体类型)。正常情况下,类型是由数据本身内容来推断的。设置了这个属性之后,就会禁用那种自动判断功能,而强制使用显式设 置的类型。

  • •. component—— 显式指定要用于此意图的组件类的名字。正常情况下,是检查该意图中的其它信息(动作、数据/类型、类别)来找到一个相匹配的能够处理该意图的组件。如果妳设置了这个属性,那么,就不会进行那些判断,而是直接使用这里所指定的组件。设置了这个属性之后,其它的Intent属性都变成可选的了。

  • •. extras —— 这是由额外信息组成的一个 Bundle 这个属性可用来向该组件提供额外的信息。例如,假设 我们有一个动作用来发送邮件,那么, 我们可以利用这个属性来提供额外数据,以表达邮件主题、正文等等。

以下是妳可以意图使用的其它一些额外参数:

在Intent类中已经定义了狠多标准的Intent动作和类别常量,但是,应用程序仍然可以定义它们自己的常量。 这些字符串使用 java风格 的命名空间习惯,以确保它们是唯一的——例如,标准的 ACTION_VIEW ,其字符串值是 "android.intent.action.VIEW"

好了,将这些东西组合到一起之后呢,实际上就是,动作的集合、数据类型、类别和额外数据,它们一起定义了一种语言,系统用这种语言来表达一些操作目标,例如“拨打阿宗的手机号码”。随着新的应用程序被添加到系统中,它们能够通过添加新的动作、类型和类别来扩展这门语言,它们也可以修改已有短语所对应的行为,具体做法就是提供自己的能够处理这些短语的活动。

意图的解析

妳所使用的意图,有两种主要形式。

在使用隐式意图时, 在给出了这样一个任意类型的意图之后,我们需要知道该如何处理它。 这就要靠意图解析过程来处理了, 它会将一个 Intent映射 到一个可以处理它的 Activity BroadcastReceiver Service ( 有些时候,会是两个或更多活动/接收器 ) 上去。

意图解析机制 的基本过程是, 将一个 Intent 与已安装的应用程序包中声明的所有 <intent-filter>描述进行匹配 ( 另外,对于广播, 还需要检查已经使用 registerReceiver(BroadcastReceiver, IntentFilter) 显式注册过的所有 BroadcastReceiver 对象 ) IntentFilter 类的文档中可看到更详细的说明。

Intent中三个方面的信息会用于解析过程:动作、类型 和类别。系统 使用 这个信息,向 PackageManager 查询 ,找到一个能够处理该意图的组件。候选 的组件,会以 AndroidManifest.xml 文件中提供的意图信息为依据,按照以下方法来确定:

  • •. 动作 (action) ,如果指定了这个的话,那么,候选的组件必须已经声明自己能够处理它。

  • •.类型 type ,如果该Intent 中未指定的话,则会从该Intent 的数据中推断出来。与动作属性一样,如果在意图中包含了一个类型(无论是显式指定还是利用数据来隐式指定)的话,那么,候选的组件必须已经声明自己能够处理它。

  • •. 对于那种 并非为 content: 类型URI 的数据,如果在Intent中也没有包含显式类型的话,则, 会考虑该意图数据中的 scheme (例如 http: mailto: ) 同样地,与动作属性类似,候选的组件必须已经声明自己能够处理它。

  • •. 如果指定 categories ,则,候选的活动应该已经声明自己能够处理它。 也就是说,如果妳加入了 CATEGORY_LAUNCHER CATEGORY_ALTERNATIVE 两个类别,那么,只有那些同时声明了这两个类别的组件才被成为候选组件。活动通常 都需要支持 CATEGORY_DEFAULT 这个类别,这样就会被 Context.startActivity() 所发现。

例如,我们来研究一下Note Pad示例程序。它可以让用户浏览一个记录列表,并且查看单个条目的详情。斜体的文字内容表示,妳应当使用自己软件包中特定的名字来代替它。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package=" com.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:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

<intent-filter>

<action android:name="android.intent.action.VIEW" />

<action android:name="android.intent.action.EDIT" />

<action android:name="android.intent.action.PICK" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="vnd.android.cursor.dir/ vnd.google.note " />

</intent-filter>

<intent-filter>

<action android:name="android.intent.action.GET_CONTENT" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="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:name="android.intent.action.VIEW" />

<action android:name="android.intent.action.EDIT" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="vnd.android.cursor.item/ vnd.google.note " />

</intent-filter>

<intent-filter>

<action android:name="android.intent.action.INSERT" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="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:name=" com.android.notepad.action.EDIT_TITLE " />

<category android:name="android.intent.category.DEFAULT" />

<category android:name="android.intent.category.ALTERNATIVE" />

<category android:name="android.intent.category.SELECTED_ALTERNATIVE" />

<data android:mimeType="vnd.android.cursor.item/ vnd.google.note " />

</intent-filter>

</activity>

</application>

</manifest>

第一 个活动, com.android.notepad.NotesList ,充当着该应用程序的主入口。 从它的3个意图模板可以看出,它能够做3件事情:

  1. 1. <intent-filter>

    <action android:name=" android.intent.action.MAIN " />

    <category android:name=" android.intent.category.LAUNCHER " />

    </intent-filter>

    这就是NotePad 应用程序的顶级入口:标准的MAIN动作表示一个主入口点(不需要在Intent中提供任何其它的信息),而LAUNCHER这个类别表明此入口点应当在应用程序启动器中列出。

  2. 2. <intent-filter>

    <action android:name=" android.intent.action.VIEW " />

    <action android:name=" android.intent.action.EDIT " />

    <action android:name=" android.intent.action.PICK " />

    <category android:name=" android.intent.category.DEFAULT " />

    <data mimeType:name="vnd.android.cursor.dir/ vnd.google.note " />

    </intent-filter>

    此处声明 了此活动能够对一个记录目录能够做的事。 所支持的类型是由<type>标记来指定的,此处 vnd.android.cursor.dir/vnd.google.note 是一个 URI 从该URI处可获取到一个对应着 0个或多个( vnd.android.cursor.dir )条目的Cursor,其中就储存着我们的记事本数据( vnd.google.note )。 在这个活动中,用户可以(通过VIEW和EDIT动作)查看或编辑此目录中的数据,或者 (通过PICK动作) 选中特定的某条记录并且返回给调用者。 还要注意此处提供的DEFAULT 类别:如果 Context.startActivity 中没有显式指定组件名字的话,那么,只有在妳的活动声明了这个类别的情况下才会被该方法计算在内。

  3. 3. <intent-filter>

    <action android:name=" android.intent.action.GET_CONTENT " />

    <category android:name=" android.intent.category.DEFAULT " />

    <data android:mimeType="vnd.android.cursor.item/ vnd.google.note " />

    </intent-filter>

    这个过滤器,表明本活动具有以下能力: 向调用者返回一个由用户选择的记录条目,而调用者不 用关心它是来自哪里的。此处 的数据类型, vnd.android.cursor.item/vnd.google.note ,是一个 URI ,其中包含 着一个仅包含单个( vnd.android.cursor.item )条目的Cursor,该条目中包含着我们的记事本数据( vnd.google.note )。 GET_CONTENT动作 PICK动作类似 此活动会向其调用者返回由用户选择的数据内容。区别 就是,调用 者会指定它们想要的数据类型

利用这些能力,就可以让以下意图解析到NotesList 活动:

  • •. { action=android.app.action.MAIN } 它能够匹配到所有能够作为应用程序顶级入口的活动。

  • •. { action=android.app.action.MAIN, category=android.app.category.LAUNCHER } 是使用的实际意图,它使用这个意图来填充自己的顶级入口列表。

  • •. { action=android.intent.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 } 类似于选取(pick)动作,但是,允许调用者指定它们想要返回的数据类型,这样,系统就能够找到适当的活动来选择某些具有该数据类型的东西。

第二 个活动, com.android.notepad.NoteEditor ,会向用户显示一个单个的记录条目,以让用户编辑它。按照 它的两个意图模板来看,它能够做两件事情:

  1. 1. <intent-filter android:label="@string/resolve_edit">

    <action android:name=" android.intent.action.VIEW " />

    <action android:name=" android.intent.action.EDIT " />

    <category android:name=" android.intent.category.DEFAULT " />

    <data android:mimeType="vnd.android.cursor.item/ vnd.google.note " />

    </intent-filter>

    此活动的第一个目的,也就是首要目的,就是,让用户与单条记录交互,记录的类型是多媒体类型 vnd.android.cursor.item/vnd.google.note 此活动可查看(VIEW)一条记录,或者让用户编辑(EDIT)该条记录。另外 ,我们也支持DEFAULT类别, 这样,在不显式指定此组件的情况下也能够启动此活动了。

  2. 2. <intent-filter>

    <action android:name=" android.intent.action.INSERT " />

    <category android:name=" android.intent.category.DEFAULT " />

    <data android:mimeType="vnd.android.cursor.dir/ vnd.google.note " />

    </intent-filter>

    此活动的第二个用途就是,向一个已有的记录目录里插入一个新的记录条目。当用户创建一个新的记录时,会用上这个:会在记录条目目录中执行INSERT动作,使得此活动运行起来并且让创建新记录的数据内容,之后会将该内容添加到内容提供者。

利用这些能力,可以让以下意图解析到NoteEditor活动:

  • •. { action=android.intent.action.VIEW data=content://com.google.provider.NotePad/notes/ {ID}  } 向用户显示编号为 {ID} 的记录的内容。

  • •. { action=android.app.action.EDIT data=content://com.google.provider.NotePad/notes/ {ID}  } 让用户编辑编号为 {ID} 的记录的内容。

  • •. { action=android.app.action.INSERT data=content://com.google.provider.NotePad/notes } 在位于"content://com.google.provider.NotePad/notes"的记录列表中创建一个新的、空白的记录,并且让用户编辑它。如果用户将编辑的内容保存了,则,新创建的记录的URI会被返回给调用者。

最后 一个活动, com.android.notepad.TitleEditor ,用来让用户编辑某个记录的标题。 这个活动,本来可以实现成一个被应用程序直接调用(显式地在Intent中设置它的组件)的类,但是,此处 我们有意向妳展示如何在已有的数据上发布替代操作:

<intent-filter android:label="@string/resolve_title">

<action android:name=" com.android.notepad.action.EDIT_TITLE " />

<category android:name=" android.intent.category.DEFAULT " />

<category android:name=" android.intent.category.ALTERNATIVE " />

<category android:name=" android.intent.category.SELECTED_ALTERNATIVE " />

<data android:mimeType="vnd.android.cursor.item/ vnd.google.note " />

</intent-filter>

在此处的单个意图模板中,我们创建了我们自己的私有动作,名为 com.android.notepad.action.EDIT_TITLE ,含意即为,编辑一个记录的标题。 就像之前的查看和编辑动作一样,此动作也必须针对某个特定的记录(数据类型 vnd.android.cursor.item/vnd.google.note )来调用, 只不过,此处显示及编辑的是记录数据中包含的标题。

除了支持通常的默认类别之外,我们的标题编辑器还支持另外两个标准类别: ALTERNATIVE SELECTED_ALTERNATIVE 。实现 这两个类别,就使得,其它的组件可以在并不知晓它的情况下得知它能够提供的特殊动作,具体做法就是:调用 queryIntentActivityOptions(ComponentName, Intent[], Intent, int) 方法 ;或者,更常见的是,使用 addIntentOptions(int, int, int, ComponentName, Intent[], Intent, int, MenuItem[]) 来构建动态的菜单条目。注意 ,在此处的意图模板中,我们还提供了一个显式的模板名字 ( android:label="@string/resolve_title" ) ,以精确 地控制用户在为她/他们正在查看的数据选择替代动作时所看到的关于此活动的说明。

利用这些能力,可以让以下意图解析到TitleEditor 活动:

  • •. { action=com.android.notepad.action.EDIT_TITLE data=content://com.google.provider.NotePad/notes/ {ID}  }  显示并且 让用户编辑与编号为 {ID} 的记录相关联的标题。

标准的活动动作

以下是由Intent 定义的用来启动活动(通常是通过 startActivity(Intent) )的标准动作。最重要的、并且目前来看最常用的,是 ACTION_MAIN ACTION_EDIT

标准的广播动作

以下是由Intent 定义的用来接收广播(通常是通过 registerReceiver(BroadcastReceiver, IntentFilter) 或是在清单文件中定义的一个<receiver>标记)的标准动作。

标准的类别

以下是可用来通过 addCategory(String) 进一步精确化某个Intent的标准类别。

标准的额外数据

以下是可通过 putExtra(String, Bundle) 用作额外数据的标准字段。

标志

有一些可通过 setFlags(int) addFlags(int) 设置到Intent中去的标志位。参考 setFlags(int) 以查看所有可能的标志位的列表。

常量

public static final  String  ACTION_BATTERY_CHANGED

自此版本开始引入 应用编程接口级别1

广播动作: 这是一个 粘滞广播 ,其中包含着关于电池的充电状态、电量等级和其它信息。参考 BatteryManager 以了解对应的Intent 中的内容的文档。

无法 通过清单中定义的组件来接收到这个广播,只有通过 Context.registerReceiver() 显式注册的组件才能接收到这个广播。 参考 ACTION_BATTERY_LOW , ACTION_BATTERY_OKAY ACTION_POWER_CONNECTED ACTION_POWER_DISCONNECTED 以了解那些被广播出来并且能够被清单文件中注册的监听器接收到的电池相关的广播。

这是一个受保护的意图,只能由系统发送。

常量值:"android.intent.action.BATTERY_CHANGED"

public static final  String  ACTION_BATTERY_LOW

自此版本开始引入 应用编程接口级别1

广播动作:表明此设备上的电池电量不足。此广播对应着“低电量警告”系统对话框。

这是一个受保护的意图,只能由系统发送。

常量值:"android.intent.action.BATTERY_LOW"

public static final  String  ACTION_BATTERY_OKAY

自此版本开始引入 应用编程接口级别4

广播动作:表明电池电量 在曾经变为低电量状态之后又回复到正常状态。 在发送了 ACTION_BATTERY_LOW 之后,一旦电池电量恢复到正常状态,就会发送此广播。

这是一个受保护的意图,只能由系统发送。

常量值:"android.intent.action.BATTERY_OKAY"

public static final  String  ACTION_BOOT_COMPLETED

自此版本开始引入 应用编程接口级别1

广播动作:在系统启动完毕之后,会将这个广播发送一次。 它可用于进行与应用程序相关的初始化,例如安装闹钟。妳必须拥有 RECEIVE_BOOT_COMPLETED 权限才能接收到这个广播。

这是一个受保护的意图,只能由系统发送。

常量值:"android.intent.action.BOOT_COMPLETED"

public static final  String  ACTION_CONFIGURATION_CHANGED

自此版本开始引入 应用编程接口级别1

广播动作:当前设备 配置 (朝向、语言区域等等) 发生了变化。 当发生这种变化时,用户界面(视 图层级结构 )需要根据新的信息进行重建;对于 大部分这种变动,应用程序 不需要关心,因为,系统会停止和重启对应的应用程序以确保该应用程序能够见证 到这种变动。某些无法 被重启的系统代码才需要监听这个动作,并做出相应的处理。

无法 通过清单中定义的组件来接收到这个广播,只有通过 Context.registerReceiver() 显式注册的组件才能接收到这个广播。

这是一个受保护的意图,只能由系统发送。

参考

常量值:"android.intent.action.CONFIGURATION_CHANGED"

public static final  String  ACTION_DATE_CHANGED

自此版本开始引入 应用编程接口级别1

广播动作:日期发生改变。

常量值:"android.intent.action.DATE_CHANGED"

public static final  String  ACTION_DEVICE_STORAGE_LOW

自此版本开始引入 应用编程接口级别1

广播动作:一个粘滞广播,表示本设备上的存储空间不足。

这是一个受保护的意图,只能由系统发送。

常量值:"android.intent.action.DEVICE_STORAGE_LOW"

public static final  String  ACTION_DEVICE_STORAGE_OK

自此版本开始引入 应用编程接口级别1

广播动作:表明,本设备已经从存储空间不足的状态脱离出来。

这是一个受保护的意图,只能由系统发送。

常量值:"android.intent.action.DEVICE_STORAGE_OK"

public static final  String  ACTION_DREAMING_STARTED

自此版本开始引入 应用编程接口级别17

广播动作:当系统开始做梦之后就会发送此广播。

这是一个受保护的意图,只能由系统发送。它只会被发送到已注册的接收器。

常量值:"android.intent.action.DREAMING_STARTED"

public static final  String  ACTION_DREAMING_STOPPED

自此版本开始引入 应用编程接口级别17

广播动作:当系统停止做梦之后就会发送此广播。

这是一个受保护的意图,只能由系统发送。它只会被发送到已注册的接收器。

常量值:"android.intent.action.DREAMING_STOPPED"

public static final  String  ACTION_GTALK_SERVICE_CONNECTED

自此版本开始引入 应用编程接口级别1

广播动作:建立了一个GTalk连接

常量值:"android.intent.action.GTALK_CONNECTED"

public static final  String  ACTION_GTALK_SERVICE_DISCONNECTED

自此版本开始引入 应用编程接口级别1

广播动作:某个GTalk连接已经断开

常量值:"android.intent.action.GTALK_DISCONNECTED"

public static final  String  ACTION_INSTALL_PACKAGE

自此版本开始引入 API level 14

活动动作:启动应用程序安装器。

输入: 其数据必须是一个 content: file:类型 URI ,可通过它来获取到要安装的应用程序。 JELLY_BEAN_MR1 开始, 妳还可以使用 package: EXTRA_INSTALLER_PACKAGE_NAME EXTRA_NOT_UNKNOWN_SOURCE EXTRA_ALLOW_RE PLACE EXTRA_RETURN_RESULT

输出 EXTRA_RETURN_RESULT ,返回的是,安装过程是否成功。

参考

常量值:"android.intent.action.INSTALL_PACKAGE"

public static final  String  ACTION_LOCALE_CHANGED

自此版本开始引入 应用编程接口级别7

广播动作:当前设备的语言区域发生变化。

这是一个受保护的意图,只能由系统发送。

常量值:"android.intent.action.LOCALE_CHANGED"

public static final  String  ACTION_MAIN

自此版本开始引入 应用编程接口级别1

活动动作:作为主入口点启动,不预期接收到数据。

输入:无。

输出:无。

常量值:"android.intent.action.MAIN"

public static final  String  ACTION_NEW_OUTGOING_CALL

自此版本开始引入 应用编程接口级别1

广播动作:即将一通电话。

Intent会带有以下额外数据:

当广播结束之后,会使用其中的 resultData作为实际拨打 的电话号码。如果这个值变为空( null ),则不会拨打电话。

系统完全允许多个接收器轮流处理外拨的电话:例如,某个父母控制应用程序可能需要验证该用户是否被允许在该时间拨打该电话,然后,某个号码改写应用程序可能在未指定区号的情况下加上一个区号。

出于一致性考虑,任何一个其目的为拦截电话的接收器,其优先级应当为0,以确保它能够看到最终将会被拨打的电话号码。任何一个其目的为改写电话号码的接收器,其优先级应当为正数。负数的优先级,是由系统保留的;如果妳使用负数的优先级,可能会引起问题。

任何 一个接收到此Intent的BroadcastReceiver,都 不允许 终止该广播。

紧急呼叫不允许使用此机制打断,同时,对于其它号码的呼叫,也不允许被使用此机制改写为呼叫紧急号码。

某些应用(例如VoIP应用)可能 想要将向外拨打的电话重定向到它们自身的服务上去。那些应用,应当首先 将resultData设置为 null ,以阻止该次呼叫,然后 ,启动它们自身的应用以进行真正的呼叫。

妳必须拥有 PROCESS_OUTGOING_CALLS 权限才能接收到这个Intent。

这是一个受保护的意图,只能由系统发送。

常量值:"android.intent.action.NEW_OUTGOING_CALL"

public static final  String  ACTION_SYNC

自此版本开始引入 应用编程接口级别1

活动动作:进行一次数据同步。

输入:?

输出?

常量值:"android.intent.action.SYNC"

public static final  String  ACTION_TIME_CHANGED

自此版本开始引入 应用编程接口级别1

广播动作:时间被设置。

常量值:"android.intent.action.TIME_SET"

public static final  String  ACTION_TIME_TICK

自此版本开始引入 应用编程接口级别1

广播动作:当前时间 发生改变。每分钟会发送一次。 无法 通过清单中定义的组件来接收到这个广播,只有通过 Context.registerReceiver() 显式注册的组件才能接收到这个广播。

这是一个受保护的意图,只能由系统发送。

常量值:"android.intent.action.TIME_TICK"

public static final  String  CATEGORY_APP_BROWSER

自此版本开始引入 应用编程接口级别15

ACTION_MAIN 一同使用,启动浏览器应用程序。对应 的活动应当具有浏览网页的能力。

注意 :此常量不应当作为 Intent 的主键,因为 ,如果妳那样做的话,会导致,应用程序启动后得不到正确的动作和类别。正确的用法是,使用 makeMainSelectorActivity(String, String) 并且传入这个参数,以生成一个主Intent,其选择器中 会包含有这个类别。

常量值:"android.intent.category.APP_BROWSER"

public static final  String  CATEGORY_HOME

自此版本开始引入 应用编程接口级别1

这是桌面活动,即为设备启动后显示出来的第一个活动。

常量值:"android.intent.category.HOME"

public static final  String  CATEGORY_LAUNCHER

自此版本开始引入 应用编程接口级别1

应当在顶级的启动器中显示。

常量值:"android.intent.category.LAUNCHER"

public static final int FLAG_ACTIVITY_BROUGHT_TO_FRONT

自此版本开始引入 应用编程接口级别1

这个标志位,一般不是由应用程序代码设置的,而是由系统对于单任务(singleTask)模式而为妳设置的,具体见 launchMode 文档。

常量值:4194304 (0x00400000)

public static final int FLAG_ACTIVITY_CLEAR_TASK

自此版本开始引入 API level 11

如果 在用于 Context.startActivity() 的某个Intent中设置了这个标志位,则, 会导致,任何那些本来应当 与此活动相关联的已有的任务,都会在此活动启动之前被清除掉。 也就是说, 该活动成为一个空白的任务的根元素,而任何旧的活动都会被结束。只能 FLAG_ACTIVITY_NEW_TASK 配套使用。

常量值:32768 (0x00008000)

public static final int FLAG_ACTIVITY_NEW_TASK

自此版本开始引入 应用编程接口级别1

如果设置 了此标志位,则,此活动会成为历史栈上的一个新任务。 一个任务(从启动它的那个活动开始,到下一个任务活动)定义了一个可被用户切换到其中的由活动组成的原子组。任务 可被切换到前台和后台;某个特定任务 中的那些活动,会保持它们的顺序。参考 任务 和后退栈 ,以了解更多关于任务的信息。

这个标志位,通常被那些具有“启动器”风格行为的活动使用:它们向用户列出一系列可以做的单独的事情,而对应的活动在被启动之后就与启动它们的活动脱离关系了。

当妳使用这个标志位的时候,如果已经 有某个为妳当前要启动的活动而运行的任务存在了,那么,不会启动一个新的活动;而是,当前 的那个任务会被切换到前台,并且保持着它之前的状态。参考 FLAG_ACTIVITY_MULTIPLE_TASK ,以了解一个可以禁用此行为的标志位。

如果调用者需要向被启动的活动获取一个结果的话,则不可以使用这个标志位。

常量值:268435456 (0x10000000)

public static final int FLAG_DEBUG_LOG_RESOLUTION

自此版本开始引入 应用编程接口级别1

妳可以使用这个标志位来启用调试功能:如果设置了这个标志位,则,在解析这个意图的过程中,会输出日志消息,以向妳告知,在创建最终的解析结果列表的过程中都找到了些什么。

常量值:8 (0x00000008)

public static final int FLAG_RECEIVER_NO_ABORT

自此版本开始引入 应用编程接口级别19

如果这是一个有序广播,则,不允许接收器终止此广播。它们仍然可以向后续的接收器传递结果,但是,它们不能阻止后续接收器接收到这个广播。

常量值:134217728 (0x08000000)

公有方法

public  Intent  addCategory ( String  category)

自此版本开始引入 应用编程接口级别1

向该意图中添加一个新的类别。类别 ,为该意图所要进行的操作提供了额外的细节信息。 在解析意图的过程中,只有那些提供 了调用者请求的 全部 类别的活动才会被使用。

参数

category

预期的类别。可以是Intent 中的某个预定义的类别,也可以是妳自己命名空间中的一个自定义类别。

返回
  • •.返回同一个Intent 对象,以便于在单条语句中连锁地进行多个调用。

参考

public  Intent  addFlags (int flags)

自此版本开始引入 应用编程接口级别1

向该意图中(已有的标志位集合中)添加额外的标志位。

参数

flags

要设置的新标志位。

返回
  • •.返回同一个Intent 对象,以便于在单条语句中连锁地进行多个调用。

参考

public  Rect  getSourceBounds ()

自此版本开始引入 应用编程接口级别7

以屏幕坐标的形式,获取此意图的发送者的屏幕区域。这可以作为一个提示,供接收者在动画或者类似的过程中进行参考。如果为空(Null),则表示没有源区域。

public  Intent  setAction ( String  action)

自此版本开始引入 应用编程接口级别1

设置要进行的普遍动作。

参数

action

动作名,例如ACTION_VIEW。只与应用程序本身相关的那些动作,应当带上开发者的软件包名字作为前缀。

返回
  • •.返回同一个Intent 对象,以便于在单条语句中连锁地进行多个调用。

参考

public  Intent  setClass ( Context  packageContext,  Class <?> cls)

自此版本开始引入 应用编程接口级别1

便利函数 ,相当于以一个 Class 对象返回的名字来调用 setComponent(ComponentName)

参数

packageContext

实现了这个类的应用程序包的上下文(Context)。

cls

要设置的类名,等价于 setClassName(context, cls.getName())

返回
  • •.返回同一个Intent 对象,以便于在单条语句中连锁地进行多个调用。

参考

public  Intent  setFlags (int flags)

自此版本开始引入 应用编程接口级别1

设置特殊 的标志位,控制着此意图将被如何处理。 此处使用的大部分值都依赖于将由此Intent 执行的组件,尤其 是, FLAG_ACTIVITY_* 这些标志位都是用于 Context.startActivity() 的,而 FLAG_RECEIVER_* 这些标志位都是用于 Context.sendBroadcast() 的。

参考 任务 和后退栈 文档 ,以了解一些重要信息,其中说明了,这里的某些选项会如何影响到妳的应用程序的行为。

参数

flags

预期的标志位。

返回
  • •.返回同一个Intent 对象,以便于在单条语句中连锁地进行多个调用。

参考

亲亲

##DTXT:SUB:·Åƨ;TXT:Ãæ»Æñ¤ÊÝ£¬·ÅƨÄè³ô£»

¿é´ó±ì·Ê£¬·ÅƨÈçÀ×£¿Æ¨Éù½ÏС£¬Ä¿±êÄÑÕÒ£»

ƨÉùÌ«´ó£¬×Ô¼ºÞÏÞΡ£

ƨζ²»ÖØ£¬×î¶àÒ»ºå£»

ƨζ²»µ­£¬Ò»Æ¬±§Ô¹¡£

ÓÐƨ²»·Å£¬±ï»µÎåÔࣻ

ûƨÂÒ¼·£¬¼·»µÉíÌå¡£  

;;

未知美人

未知美人

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands