Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递 Intent 来执行动作和产生事件。使用 Intent 可以激活 Android 应用的三个核心组件:活动(Activity)、服务(Service)和广播接收器(BroadcastReceiver)。

意图:
显式意图:调用Intent.setComponent() 或 Intent.setClassName() 或 Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
Intent intent = new Intent();
1. intent.setComponent(new ComponentName(MainActivity.this, OtherActivity.class));
2. intent.setClass(MainActivity.this, OtherActivity.class);
3. Intent intent = new Intent(MainActivity.this,OtherActivity.class);

隐式意图:没有明确指定组件名的Intent为隐式意图。Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(data: URI和数据类型)找到最合适的组件来处理这个意图

Uri data = Uri.parse("tel:" + phoneCode);
Intent intent = new Intent(Intent.ACTION_CALL, data);

在启动的ativity的onCreate中获取intent使用getIntent()方法,获取action使用intent.getAction(),获取data使用intent.getData()。

意图启动

启动不返回结果的意图,使用startActivity(intent)。

启动返回结果的意图,使用startActivityForResult(intent, SHOW_SUBACTIVITY),SHOW_SUBACTIVITY是请求码,用来在接收回调结果的onActivityResult(int requestCode, int resultCode, Intent data)方法中区分打开的子activity的回调。

若要传递责任给次最佳匹配的组件,则在onCreate中获取intent后使用startNextMatchingActivity(intent)。

意图过滤器:

如果意图过滤器包含了指定的动作,或者没有指定动作,那么就认为动作匹配。

意图过滤器必须包含待解析的意图中的所有category,没有指定category的意图过滤器只能和没有任何category的意图相匹配。需要注意的是,Android把所有传给startActivity()的隐式意图当作他们包含至少一个类别:"android.intent.category.DEFAULT" (CATEGORY_DEFAULT常量)。

意图的数据URI的每一个部分都和意图过滤器的data标签进行比较,没有指定数据值的意图过滤器将会和所有的意图数据值匹配。

Intent类中的静态字符串常量

action:

ACTION_ANSWER 打开一个处理来电的活动

ACTION_CALL 打开一个电话拨号程序,并立即使用意图URI所提供的号码拨打一个电话

ACTION_DELETE 启动一个活动,允许删除意图的URI中指定的数据

ACTION_DIAL 打开一个拨号程序,拨打意图URI所提供的号码

ACTION_EDIT 请求可以编辑指定的意图URI中的数据的活动

ACTION_INSERT 打开一个能在意图URI指定的光标出插入新条目的活动

ACTION_PICK 启动一个子活动,它可以让你从意图URI指定的内容提供器中选择一个条目

ACTION_SEARCH 启动用于执行搜索的活动

ACTION_SENDTO 启动一个活动来向意图URI所指定的联系人发送一条消息

ACTION_SEND 启动一个活动,发送意图中指定的数据

ACTION_VIEW 通用动作,根据所提供的数据的URI模式来处理视图请求

ACTION_WEB_SEARCH 根据意图URI提供的文本执行Web搜索

category:

ALTERNATIVE 把动作指定为在特定数据类型上执行的默认动作的可选项

SELECTED_ALERNATIVE 使用动作帮助填充上下文菜单

BROWSABLE 浏览器内部可用的动作

DEFAULT 使一个组件成为意图过滤器内指定的数据类型的默认动作

GADGET 活动可以嵌入到另一个活动中执行

HOME 不指定action时,意图则作为本地主屏幕的可选项

LAUNCHER 出现在应用程序的启动器中

android-意图Intent的更多相关文章

  1. Android之Intent深入

    Android中的意图包含多种用法,本文主要包括以下内容 显式意图 隐匿意图 要求结果回传的意图 显式意图 :必须指定要激活的组件的完整包名和类名 (应用程序之间耦合在一起) 一般激活自己应用的组件的 ...

  2. android之intent显式,显式学习

    intent,意图 当从一个Activity到另一个Activity时调用,这里重点学习显式,隐式的使用 使用语句上的区别: 隐式意图:                 显式意图: setAction ...

  3. Android利用Intent与其他应用交互

    前言: 上一篇博客给大家聊了Intent的定义,分类.属性和功能,相信大家对于Intent在Android中的作用已经清楚,这一篇博客将会给大家聊Intent的用法. Android系统的一个重要特性 ...

  4. Android解决Intent中的数据重复问题

    转载地址:http://www.cnblogs.com/anrainie/articles/2383941.html 最近在研究Android,遇到了一些Notification(通知)的问题: .N ...

  5. 【转】【Java/Android】Intent的简介以及属性的详解

    一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述 ...

  6. 【Android开发精要笔记】Android的Intent机制

    Android的Intent机制 Intent对象的作用和构成 android意图机制最核心的设计思想,就是引入了组件管理服务作为连接组件的管理者. 该服务的作用: 通过组件的配置信息了解系统中每个组 ...

  7. 【Android开发日记】之入门篇(十一)——Android的Intent机制

    继续我们的Android之路吧.今天我要介绍的是Android的Intent. 对于基于组件的应用开发而言,不仅需要构造和寻找符合需求的组件,更重要的是要将组件有机的连接起来,互联互通交换信息,才能够 ...

  8. Android利用Intent与其它应用交互

    前言: 上一篇博客给大家聊了Intent的定义.分类.属性和功能,相信大家对于Intent在Android中的作用已经清楚,这一篇博客将会给大家聊Intent的使用方法. Android系统的一个重要 ...

  9. Android笔记---Intent实现Activity跳转

    学了之前的Android控件以及布局,我们就能够做一些UI的设计了,这里我结合之前的知识.以一个小的登录项目来解说下Activity之间跳转. 先看下效果图: 1.登录界面: 2.点击登录按钮跳转到另 ...

  10. 意图Intent

    意图点击官方链接 前言 对意图Intent,学习安卓需掌握.以官方链接:http://www.android-doc.com/reference/android/content/Intent.html ...

随机推荐

  1. ZOJ1100 状压DP +深搜

    记得做过类似于这类题目是能够用组合数学方法来解决的,可惜淡忘了,也找不到了,看了网上的也有人提到过能够用组合公式解决,但是没人做,都是用了状压DP的方法,这个状压非常难讲清楚吧,推荐两篇 第一遍大体看 ...

  2. 差一本CSS 3的书,有兴趣的作者来写

    最近出版了一套CSS图书,但是缺一个CSS 3作者,是要独立写一本书的,所以要求作者务必有2年以上的经验,有写作时间和写作爱好 平时写BLOG者优先 有兴趣的可以联系Q:1602943293,验证:写 ...

  3. CodeForces Round #179 (295A) - Greg and Array 一个线段树做两次用

    线段树的区间更新与区间求和...一颗这样的线段树用两次... 先扫描1~k...用线段树统计出每个操作执行的次数... 那么每个操作就变成了 op. l  , op.r , op.c= times* ...

  4. li span兼容性问题

    li与span的搭配使用所产的浏览器兼容性问题 1.ls两位,设定了width还是没用.2.总结了一下就是,里面的标签漂浮以后,就不能撑起外层的容器了. 3.li要设至少一个宽度或高度,还要加上ove ...

  5. md笔记——编程术语

    thinkPython 读书笔记 本列表根据thinkPython中记录的大量编程术语 整理而来. 该书的重点不是教会你Python,而是培养读者用计算机科学家一样的思路来思考,设计,开发. 讲解了语 ...

  6. html基础标签-1-pre预格式标签

    pre预格式标签 code,tt标签 1 <!doctype html> 2 <html lang='zh-cn'> 3 <head> 4 <meta cha ...

  7. OC 中的block使用

    在iOS的开发过程中,使用块的地方很多也很方便,但是在使用块的过程中要注意内存泄露的问题. 在块创建的时候,会对块内的所有对象的引用计数加一,直到块销毁,所以在使用块的过程中需要我们进行处理,在这里以 ...

  8. NetWare

    本地网络连接属性中就有Netware客户端服务项 概括的说,Netware是NOVELL公司推出的网络操作系统,Netware最重要的特征是基于基本模块设计思想的开放式系统结构. Netware是一个 ...

  9. jQ中prop与attr的区别

    1.prop适用于HTML元素本身就带有的固有属性 2.attr适用于HTML元素我们自定义的属性 <input type="checkbox" value="复选 ...

  10. JQ插件开发方法

    由于项目原因,不得不写个JQ侧滑插件来满足需求.. 先引用两篇博文,待测试了 再写怎么做.. http://blog.csdn.net/business122/article/details/8278 ...