您的位置:首页 > 移动开发 > Android开发

Android使用Intent Filter来响应隐式Intent

2010-08-20 10:07 399 查看
转自http://justjavac.javaeye.com/blog/698026

如果一个
Intent
请求在一片数据上执行一个动作,
Android
如何知道哪个应用程序(和组件)能用来响应这个请求呢?
Intent Filter就是
用来注册
Activity

Service

Broadcast Receiver
具有能在某种数据上执行一个动作的能力。

使用
Intent Filter
,应用程序组件告诉
Android
,它们能为其它程序的组件的动作请求提供服务,包括同一个程序的组件、本地的或第三方的应用程序。为了注册一个应用程序组件为
Intent
处理者,在组件的
manifest
节点添加一个
intent-filter
标签。


Intent Filter
节点里使用下面的标签(关联属性),你能指定组件支持的动作、种类和数据:


action

使用
android:name
特性来指定对响应的动作名。动作名必须是独一无二的字符串,所以,一个好的习惯是使用基于
Java
包的命名方式的命名系统。


category

使用
android:category
属性用来指定在什么样的环境下动作才被响应。每个
Intent Filter
标签可以包含多个
category
标签。你可以指定自定义的种类或使用
Android
提供的标准值,如下所示:


ALTERNATIVE

你将在这章的后面所看到的,一个
Intent Filter
的用途是使用动作来帮忙填入上下文菜单。
ALTERNATIVE
种类指定,在某种数据类型的项目上可以替代默认执行的动作。例如,一个联系人的默认动作时浏览它,替代的可能是去编辑或删除它。


SELECTED_ALTERNATIVE


ALTERNATIVE
类似,但
ALTERNATIVE
总是使用下面所述的
Intent
解析来指向单一的动作。SELECTED_ALTERNATIVE在需要一个可能性列表时使用。


BROWSABLE

指定在浏览器中的动作。当
Intent
在浏览器中被引发,都会被指定成
BROWSABLE
种类。


DEFAULT

设置这个种类来让组件成为
Intent Filter
中定义的
data
的默认动作。这对使用显式
Intent
启动的
Activity
来说也是必要的。


GADGET

通过设置
GADGET
种类,你可以指定这个
Activity
可以嵌入到其他的
Activity
来允许。


HOME

HOME Activity
是设备启动(登陆屏幕)时显示的第一个
Activity
。通过指定
Intent Filter

HOME
种类而不指定动作的话,你正在将其设为本地
home
画面的替代。


LAUNCHER

使用这个种类来让一个
Activity
作为应用程序的启动项。


data

data
标签允许你指定组件能作用的数据的匹配;如果你的组件能处理多个的话,你可以包含多个条件。你可以使用下面属性的任意组合来指定组件支持的数据:


android:host

指定一个有效的主机名(例如,
com.google
)。


android:mimetype

允许你设定组件能处理的数据类型。例如,<type android:value=”vnd.android.cursor.dir/*”/>能匹配任何
Android
游标。


android:path

有效地
URI
路径值(例如,
/transport/boats/
)。


android:port

特定主机上的有效端口。


android:scheme

需要一个特殊的图示(例如,
content

http
)。

接下来的代码片段显示了如何配置
Activity

Intent Filter
,使其以在特定数据下的默认的或可替代的动作的身份来执行
SHOW_DAMAGE动作。(创建地震内容将在下一章节。)

<activity android:name=”.EarthquakeDamageViewer”
android:label=”View Damage”>

<intent-filter>

<action android:name=”com.paad.earthquake.intent.action.SHOW_DAMAGE” />

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

<category android:name=”android.intent.category.ALTERNATIVE_SELECTED” />

<data android:mimeType=”vnd.earthquake.cursor.item/*” />

</intent-filter>

</activity>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: