如果一个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的用途是使用action来帮忙填入上下文菜单。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”>
-
- </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>
分享到:
相关推荐
显式Intent通过指定目标组件进行直接调用,而隐式Intent则依赖于Intent Filter的匹配来寻找合适的响应者。熟练掌握这两种Intent以及Intent Filter的使用,对于开发高效且可扩展的Android应用至关重要。通过学习和...
当使用隐式Intent时,目标Activity需要设置Intent Filter来表明它可以响应哪种类型的Intent。在AndroidManifest.xml中定义Intent Filter如下: ```xml <intent-filter> <action android:name="android.intent...
Android 中使用隐式 Intent 完成应用的步骤及核心代码 ...使用隐式 Intent 可以使得应用程序之间的交互更加灵活和方便,但需要在 AndroidManifest.xml 文件中声明 Intent Filter 并在 Activity 中注册 Intent Filter。
总结来说,创建一个使用隐式Intent的启动器应用涉及了对Intent过滤器的理解、Intent的处理以及用户界面的设计。通过这样的实践,开发者不仅能深入理解Android组件间通信机制,还能掌握如何打造用户体验良好的个性化...
显式 Intent 直接指定了目标组件的名称,而隐式 Intent 则不指定,而是通过 Intent Filter 来匹配合适的组件。 2. Intent 对象 Intent 对象包含了以下关键信息: 2.1 组件名字:可选,用于指定目标组件的具体类名...
在AndroidManifest.xml中,开发者需要声明他们应用能够响应的隐式Intent,通过或标签的<intent-filter>子标签进行配置,这样其他应用才能找到并利用这些功能。 使用隐式Intent时,应注意安全问题,因为任何应用都...
在 Android 中使用隐式 Intent 需要在 AndroidManifest.xml 文件中,首先被调用的 Activity 要有一个带有 `<intent-filter>` 并且包含 `<action>` 的 Activity,设定它能处理的 Intent,并且 category 设为默认值。...
在这个实验中,当用户点击拨打电话的图片按钮时,会创建一个隐式Intent,因为系统内置的电话拨号器并不是我们直接引用的类,而是通过设置ACTION_CALL行动和tel URI数据来触发。Intent的构建可能如下: ```java ...
隐式Intent不直接指定目标组件,而是通过设定Action、Data、Category等元数据来描述一个操作,然后系统会遍历所有注册过的Intent Filter,找到最适合处理这个Intent的组件。这种方式允许不同应用之间的组件互相调用...
在AndroidManifest.xml中,我们可以为Activity或Service定义Intent Filter,以响应特定的隐式Intent。例如,为了响应上面的Web浏览Intent,我们可以在Activity声明中添加: ```xml <intent-filter> ...
在AndroidManifest.xml中,为组件定义Intent Filter,使得组件可以响应隐式Intent: ```xml <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android....
本文将深入探讨Intent的使用方式,包括显式Intent、隐式Intent、Intent Filter、数据传递以及如何通过Intent调用系统服务和启动第三方应用。 首先,我们来了解一下**显式Intent**。显式Intent明确指定了要启动的...
- 隐式Intent:不指定具体组件,而是通过Action、Data、Category等元数据来定义意图,任何能处理这些元数据的组件都可以响应。 2. **Intent构造器**: - `new Intent(Context, Class)`:创建一个显式Intent,用于...
但是,需要注意的是,隐式Intent的使用需要遵守一定的规则和原则,以避免出现意外的错误和问题。 Android中隐式Intent与Activity的匹配原则是Android系统中的一种机制,用于在Activity之间进行通信和交互。通过配置...
- 隐式Intent: 不指定目标组件,而是通过动作和数据来寻找能处理该Intent的组件。这种方式可以跨应用通信,增加了系统的开放性和互操作性。 4. **Intent的附加信息** - `putExtra()`: 用于添加额外的数据到Intent...
本文主要关注如何使用隐式Intent来完成界面之间的切换任务。 首先,我们需要理解Intent的两种类型:显式Intent和隐式Intent。显式Intent直接指定要启动的组件(Activity或Service)的类名,而隐式Intent则不直接...
而隐式Intent则是不指定具体组件,而是通过Action、Data、Category等元数据来匹配系统中能够处理该Intent的组件。 1. 显式Intent的使用: - 创建Intent实例:`Intent intent = new Intent(context, TargetActivity...
当发送一个隐式Intent时,系统会遍历所有注册的组件,根据Intent Filter进行匹配,选择最合适的组件来处理Intent。 总结,Intent1_Intent.zip中的源码可能涵盖了Intent的基本使用、数据传递、Intent Filter配置...