`
jacky22
  • 浏览: 4869 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用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的用途是使用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 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动作。(创建地震内容将在下一章节。)

 

Java代码 复制代码
  1. <activity android:name=”.EarthquakeDamageViewer”   
  2.   
  3. android:label=”View Damage”>   
  4.   
  5. <intent-filter>   
  6.   
  7. <action   
  8.   
  9. android:name=”com.paad.earthquake.intent.action.SHOW_DAMAGE”>   
  10.   
  11. </action>   
  12.   
  13. <category android:name=”android.intent.category.DEFAULT”/>   
  14.   
  15. <category   
  16.   
  17. android:name=”android.intent.category.ALTERNATIVE_SELECTED”   
  18.   
  19. />   
  20.   
  21. <data android:mimeType=”vnd.earthquake.cursor.item/*”/>   
  22.   
  23. </intent-filter>   
  24.   
  25. </activity>  

分享到:
评论

相关推荐

    显式和隐式、过滤器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。

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

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

    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的组件。这种方式允许不同应用之间的组件互相调用...

    android中intent使用示例

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

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

    Intent的多种用法

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

    Andriod Intent使用代码举例

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

    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