`
haking
  • 浏览: 264422 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Intent and Intent Filters

阅读更多
      一个Android应用程序的核心组件:活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver),是通过一种称为意图(Intent)的信息激活的。意图是用于相同或不同应用间的一种迟到的运行时间的组件。意图本身是一个意图对象,它是一种被动的数据结构,持有一个将要执行的操作的抽象描述、或者是已经发生或正在发生的广播的描述。3大组件传递Intent的机制如下:

     Activity

      Context.startActivity(Intent intent);

     Context.startActivityForResult(Intent intent); -- Activity.setResult(int resultCode);

     Service

     Context.startService(Intent intent);

     Context.startBindService(Intent intent);

     BroadcastReceiver

     Context.sendBroadcast(Intent intent);

     Context.sendOrderedBroadcast(Intent intent);

     Context.sendStickyBroadcast(Intent intent);

     不同组件间的Intent互不重叠,也就是说广播Intent只能传递给广播接收器,绝不会传递给Activity或Service。

 

      一个Intent对象其实就是信息的捆绑。它包含收到此Intent的组件所感兴趣的信息以及Android系统感兴趣的信息。原则上,Intent对象可以包含以下属性:

      Component name

     处理该Intent的组件名称(目标组件的类路径),可选。

     组件名可以通过setComponent()、setClass()、setClassName()设置,通过getComponent()读取。

     组件名的设置与否对应于Intent的两种解析情况:显式意图、隐式意图。

     Action

     Action是一个字符串,用来命名要执行的动作。

     Intent类定义了一系列的action常量。我们也可以根据需要自定义。

     Data

     执行Action时需要的数据。包含数据URI(scheme://host:port/path)和数据的MIME类型。

     Category

     被执行动作的附加信息。

      Extras

     包含其它附加信息的键值对集合。

     Flags

     指导Android系统启动一个Activity以及Activity启动之后的处理。

    

     当使用Intent时,直接指定Intent的Component,那么Android系统将无需解析Intent。当没有指定Component时,这时Android系统通过IntentFilter解析Intent,并查找Intent的处理者。IntentFilter通过在AndroidManifest.xml文件注册(BroadcastReceiver可以通过Context.registerReceiver()动态注册)。在解析Intent时,Android是通过其中的action、data、category3个属性来判断,任一属性不匹配,都不会把Intent交给组件。判断方法如下:

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

     如果Intent指定了data,但没有提供mimeType,系统将从data中得到数据类型。也就是说,通过scheme来判断mimeType。

     如果Intent指定了category(1个或多个),那么IntentFilter需包含所有的category。有一个例外:通过startActivity(),IntentFilter只要包含Intent中其中一个category即可。

     PackageManager提供了query...()方法用于查询匹配Intent的组件。

 

     

分享到:
评论

相关推荐

    android intent and intent-filters

    Intent-Filters则是定义组件如何响应Intent的一种机制,允许系统根据Intent的类型来启动相应的组件。本篇文章将深入探讨Android的Intent与Intent-Filters,并通过实例解析它们的工作原理。 首先,Intent分为显式...

    Intent 与 Intent Filters 实现外部调用

    在Android开发中,Intent和Intent Filters是两个至关重要的概念,它们是应用程序之间通信的主要桥梁,也是实现外部调用的关键机制。下面将详细讲解Intent和Intent Filters的工作原理以及如何使用它们来实现外部调用...

    Android Intents and Intent Filters(一)

    Android Intents and Intent Filters(一) 对应博客地址:http://blog.csdn.net/michael__li/article/details/6947545

    Intents and Intent Filters 理论中英双文

    内含四个pdf文件,分别为 Intent and Intent-filter Intents and Intent Filters理论英文 Intents and Intent Filters理论中文 Intent入门指南 详尽介绍关于android intent

    Android Intents and Intent Filters(二)源代码

    Android Intents and Intent Filters(二)源代码 对应博客 http://blog.csdn.net/michael__li/article/details/6950127

    Android系列教程之十二:Intents and Intent Filters(三).docx

    Intent Filters则是接收Intent的组件(如Activity、Service等)用来声明它们能处理的Intent类型。本教程将深入讲解Intent和Intent Filters,特别是如何利用它们进行数据检测。 在Intent Filter中,`<data>`标签用于...

    Android开发之旅 Intents和Intent Filters(实例部分)(免费)

    ### Android开发之旅:深入理解Intents与Intent Filters 在Android开发中,`Intents`与`Intent Filters`是实现组件间通信的关键技术。通过这两项技术,开发者可以让应用程序中的不同组件,甚至不同的应用程序之间...

    android应用开发详解第八章

    2. **Intent和意图过滤器(Intent and Intent Filters)**:Intent是Android中传递信息和启动服务或活动的主要方式。这一章可能会涵盖如何创建Intent,如何使用Intent启动Activity以及如何设置Intent Filter来响应...

    Android GeoQuiz

    7. **Intent与意图过滤器(Intent and Intent Filters)**:在GeoQuiz中,Intent可能用于启动新的Activity,例如展示问题或显示答案。同时,可能还设置了Intent Filter以便其他应用能启动GeoQuiz的特定功能,如分享...

    Android编程实现启动另外的APP及传递参数的方法

    - Android开发者官方文档:[Intent and Intent Filters](http://developer.android.com/guide/components/intents-filters.html) - 更多关于Android组件、视图、布局、资源操作、文件操作以及Activity管理的教程和...

    Android_intent_大全

    6. **Intent Filters**:在AndroidManifest.xml中,通过intent-filter标签定义组件能响应哪些Intent,包括Action、Category和Data,使得其他应用可以通过隐式Intent调用组件。 7. **startActivity()** 和 **...

    Learn-Intent:该存储库包含学习Intent Android的结果代码

    5. **IntentFilters**: 在AndroidManifest.xml文件中,开发者可能定义了Intent Filters,以便于隐式Intent可以找到相应的组件进行处理。例如,定义一个ACTION_VIEW Intent Filter可以让其他应用共享数据时调用你的...

    Android开发指南中文版

    意图和意图过滤器Intents and Intent Filters 43 意图过滤器Intent filters 47 通常情况Common cases 51 使用意图匹配Using intent matching 52 数据存储Data Storage 52 概览Storage quickview 52  系统偏好:...

    Android开发宝典.rar

    意图和意图过滤器Intents and Intent Filters 43 意图过滤器Intent filters 47 通常情况Common cases 51 使用意图匹配Using intent matching 52 数据存储Data Storage 52 概览Storage quickview 52  系统...

    Android-Intents-3

    2. **配置Intent Filters**:为了能够通过Intent启动该Activity,需要在AndroidManifest.xml中为每个Tab对应的Activity配置Intent Filters。 3. **发送Intent**:在启动Activity时,通过Intent指定要显示的Tab。 ##...

    【Android开发API】应用的组成部分-意图和意图过滤器.pdf

    **Intent过滤器(Intent Filters)** 由于Intent并没有明确指定目标组件,Android系统依赖Intent过滤器(Intent Filter)来决定哪个组件应该接收特定的Intent。Intent过滤器在AndroidManifest.xml文件中定义,它们描述...

Global site tag (gtag.js) - Google Analytics