`

使用Intent Filter来响应隐式Intent

阅读更多

如果一个Intent请求在一片数据上执行一个动作,Android如何知道哪个应用程序(和组件)能用来响应这个请求呢?Intent Filter就是用来注册ActivityServiceBroadcast 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 FilterHOME种类而不指定动作的话,你正在将其设为本地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

需要一个特殊的图示(例如,contenthttp)。

 

接下来的代码片段显示了如何配置ActivityIntent Filter,使其以在特定数据下的默认的或可替代的动作的身份来执行SHOW_DAMAGE动作。(创建地震内容将在下一章节。)

 

<activity android:name=”.EarthquakeDamageViewer”

android:label=”View Damage”>

<intent-filter>

<action

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

</action>

<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>

 

分享到:
评论
1 楼 lcyaiym 2010-12-29  
不错 ,我正在研究这个问题了。

相关推荐

    显式和隐式、过滤器intent的使用

    显式Intent通过指定目标组件进行直接调用,而隐式Intent则依赖于Intent Filter的匹配来寻找合适的响应者。熟练掌握这两种Intent以及Intent Filter的使用,对于开发高效且可扩展的Android应用至关重要。通过学习和...

    显示Intent和隐式Intent启动Activity的示例

    当使用隐式Intent时,目标Activity需要设置Intent Filter来表明它可以响应哪种类型的Intent。在AndroidManifest.xml中定义Intent Filter如下: ```xml &lt;intent-filter&gt; &lt;action android:name="android.intent...

    android中使用隐式intent完成应用的步骤及核心代码2022优秀文档.pptx

    Android 中使用隐式 Intent 完成应用的步骤及核心代码 ...使用隐式 Intent 可以使得应用程序之间的交互更加灵活和方便,但需要在 AndroidManifest.xml 文件中声明 Intent Filter 并在 Activity 中注册 Intent Filter。

    Intents 和Intent filter 理论介绍

    显式 Intent 直接指定了目标组件的名称,而隐式 Intent 则不指定,而是通过 Intent Filter 来匹配合适的组件。 2. Intent 对象 Intent 对象包含了以下关键信息: 2.1 组件名字:可选,用于指定目标组件的具体类名...

    隐式Intent的应用

    在AndroidManifest.xml中,开发者需要声明他们应用能够响应的隐式Intent,通过或标签的&lt;intent-filter&gt;子标签进行配置,这样其他应用才能找到并利用这些功能。 使用隐式Intent时,应注意安全问题,因为任何应用都...

    android中隐式intent的使用说明2022优秀文档.pptx

    在 Android 中使用隐式 Intent 需要在 AndroidManifest.xml 文件中,首先被调用的 Activity 要有一个带有 `&lt;intent-filter&gt;` 并且包含 `&lt;action&gt;` 的 Activity,设定它能处理的 Intent,并且 category 设为默认值。...

    实验10 使用Intent进行通信

    在这个实验中,当用户点击拨打电话的图片按钮时,会创建一个隐式Intent,因为系统内置的电话拨号器并不是我们直接引用的类,而是通过设置ACTION_CALL行动和tel URI数据来触发。Intent的构建可能如下: ```java ...

    Android中Intent的详解(显式,隐式,系统,startActivityForResult);

    隐式Intent不直接指定目标组件,而是通过设定Action、Data、Category等元数据来描述一个操作,然后系统会遍历所有注册过的Intent Filter,找到最适合处理这个Intent的组件。这种方式允许不同应用之间的组件互相调用...

    使用隐式Intent,创建一个启动器

    总结来说,创建一个使用隐式Intent的启动器应用涉及了对Intent过滤器的理解、Intent的处理以及用户界面的设计。通过这样的实践,开发者不仅能深入理解Android组件间通信机制,还能掌握如何打造用户体验良好的个性化...

    android中intent使用示例

    在AndroidManifest.xml中,我们可以为Activity或Service定义Intent Filter,以响应特定的隐式Intent。例如,为了响应上面的Web浏览Intent,我们可以在Activity声明中添加: ```xml &lt;intent-filter&gt; ...

    Intent的多种用法

    本文将深入探讨Intent的使用方式,包括显式Intent、隐式Intent、Intent Filter、数据传递以及如何通过Intent调用系统服务和启动第三方应用。 首先,我们来了解一下**显式Intent**。显式Intent明确指定了要启动的...

    Andriod Intent使用代码举例

    - 隐式Intent:不指定具体组件,而是通过Action、Data、Category等元数据来定义意图,任何能处理这些元数据的组件都可以响应。 2. **Intent构造器**: - `new Intent(Context, Class)`:创建一个显式Intent,用于...

    Android Studio 实验二:Intent的使用

    在AndroidManifest.xml中,为组件定义Intent Filter,使得组件可以响应隐式Intent: ```xml &lt;intent-filter&gt; &lt;action android:name="android.intent.action.MAIN" /&gt; &lt;category android:name="android....

    android中隐式intent与activity的匹配原则2022优秀文档.pptx

    但是,需要注意的是,隐式Intent的使用需要遵守一定的规则和原则,以避免出现意外的错误和问题。 Android中隐式Intent与Activity的匹配原则是Android系统中的一种机制,用于在Activity之间进行通信和交互。通过配置...

    Android的Intent实验

    - 隐式Intent: 不指定目标组件,而是通过动作和数据来寻找能处理该Intent的组件。这种方式可以跨应用通信,增加了系统的开放性和互操作性。 4. **Intent的附加信息** - `putExtra()`: 用于添加额外的数据到Intent...

    Android中使用隐式Intent完成界面切换的任务说明.pdf

    本文主要关注如何使用隐式Intent来完成界面之间的切换任务。 首先,我们需要理解Intent的两种类型:显式Intent和隐式Intent。显式Intent直接指定要启动的组件(Activity或Service)的类名,而隐式Intent则不直接...

    android Intent的用法

    而隐式Intent则是不指定具体组件,而是通过Action、Data、Category等元数据来匹配系统中能够处理该Intent的组件。 1. 显式Intent的使用: - 创建Intent实例:`Intent intent = new Intent(context, TargetActivity...

    Android应用源码之Intent1_Intent.zip

    当发送一个隐式Intent时,系统会遍历所有注册的组件,根据Intent Filter进行匹配,选择最合适的组件来处理Intent。 总结,Intent1_Intent.zip中的源码可能涵盖了Intent的基本使用、数据传递、Intent Filter配置...

Global site tag (gtag.js) - Google Analytics