WEB开发网
开发学院手机开发Android 开发 Android 中的 Intent 详细讲解 阅读

Android 中的 Intent 详细讲解

 2010-04-13 01:52:00 来源:WEB开发网   
核心提示:应用也可以提供自己的Activity来处理已经存在的这样的“短语”,从而改变这些“短语”的行为,Android 中的 Intent 详细讲解(3),二、 Android如何解析Intent在应用中,我们可以以两种形式来使用Intent:* 直接Intent:指定了component属性的Intent(调用 setCom

应用也可以提供自己的Activity来处理已经存在的这样的“短语”,从而改变这些“短语”的行为。

二、 Android如何解析Intent

在应用中,我们可以以两种形式来使用Intent:

* 直接Intent:指定了component属性的Intent(调用 setComponent(ComponentName)或者setClass(Context, Class)来指定)。通过指定具体的组件类,通知应用启动对应的组件。

*

* 间接Intent:没有指定comonent属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。

对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接Intent,通过解析,将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。

Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。在这个解析过程中,Android是通过Intent的action、type、category这三个属性来进行判断的,判断方法如下:

* 如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配;

*

* 如果Intent没有提供type,系统将从data中得到数据类型。和action一样,目标组件的数据类型列表中必须包含Intent的数据类型,否则不能匹配。

*

* 如果Intent中的数据不是content: 类型的URI,而且Intent也没有明确指定它的type,将根据Intent中数据的scheme (比如 http: 或者mailto: ) 进行匹配。同上,Intent 的scheme必须出现在目标组件的scheme列表中。

*

* 如果Intent指定了一个或多个category,这些类别必须全部出现在组建的类别列表中。比如 Intent中包含了两个类别:LAUNCHER_CATEGORY 和 ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。

三、应用例子

以下,以Android SDK中的便笺例子来说明,Intent如何定义及如何被解析。这个应用可以让用户浏览便笺列表、查看每一个便笺的详细信息。

xml 代码

复制内容到剪贴板

代码:

Xml代码

android.notepad" xmlns:android="http://schemas.android.com/apk/res/android">

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Android Intent 详细

编辑录入:coldstar [复制链接] [打 印]
赞助商链接