intent

合集下载

Intent深入详解PPT课件

Intent深入详解PPT课件
10
用于指示Android系统如何加载并运行一个操作, 可以通过addFlags()方法进行增加。
11
12
13
14
15
16
17
18
19
20
指定要接收短信的手机号码,如果不指定,则在短 信接收人处将不会显示号码,用户要自己填写:
◦ Uri uri = Uri.parse("smsto:13621384455");
42
感谢观看
The user can demonstrate on a projector or computer, or print the presentation and make it into a film
43
21
22
23
24
25
调用发送短信的Action:
◦ it.setAction(Intent.ACTION_SEND);
指定要发送的图片,直接从sdcard上指定:
◦ Uri uri = Uri.parse("file:///sdcard/mypic.jpg");
设置要发送的信息内容:
◦ public static Intent createChooser(Intent target, CharSequence title)
38
39
40
提问与解答环节
Questions and answers
41
结束语 CONCLUSION
感谢参与本课程,也感激大家对我们工作的支持与积极的参与。课程 后会发放课程满意度评估表,如果对我们课程或者工作有什么建议和 意见,也请写在上边,来自于您的声音是对我们最大的鼓励和帮助, 大家在填写评估表的同时,也预祝各位步步高升,真心期待着再次相 会!

intent的使用 -回复

intent的使用 -回复

intent的使用-回复什么是intent?在计算机科学中,intent是指一个用于进行用户交互的抽象概念。

它被用于描述用户在使用应用程序或系统时所表达的意图或动作。

意图通常以文本或语音的形式表达,用于告知计算机用户的需求,从而激活相应的功能或服务。

Intent经常用于移动应用程序开发中,并在Android操作系统中得到广泛应用。

Android的Intent是一种用于在各个组件(如Activity、Service、Broadcast Receiver)之间进行通信的机制。

它可以用于启动新的活动、启动服务、发送广播等操作。

通过Intent,Android系统可以根据接收到的意图来决定采取哪些操作,以满足用户的需求。

Intent主要有两种类型:显式Intent和隐式Intent。

显式Intent用于明确地指定要启动的组件,而隐式Intent则是通过指定操作、数据和类别等信息,让系统自动匹配合适的组件来处理意图。

使用Intent的好处是,它可以将应用程序之间的交互解耦,使开发者能够以一种模块化的方式设计和组织应用程序。

同时,Intent还提供了灵活性和扩展性,因为它可以在运行时动态地将组件连接起来,并且可以在不同应用程序之间进行通信。

在开发过程中,我们可以通过Intent来实现一系列功能。

首先,我们可以使用Intent来启动一个新的活动。

对于Android应用程序而言,活动(Activity)是用户界面的一个组成部分。

通过Intent,我们可以告知系统要启动的具体活动,并传递必要的数据和参数。

其次,我们可以使用Intent来启动服务(Service)。

服务是一种在后台运行的组件,它用于执行长时间运行的任务,如网络操作、文件处理等。

通过Intent,我们可以指定要启动的服务组件,并传递必要的参数。

除了启动活动和服务外,Intent还可以用于发送广播(Broadcast)。

广播是一种系统级的通信机制,用于在应用程序之间或系统组件之间传递消息。

安卓intent用法

安卓intent用法

安卓intent用法Android中的Intent是一种消息传递机制,用于在应用程序中传递信息或执行操作。

Intent可以用于在不同的组件之间启动服务、启动活动或者传递数据。

以下是一些示例用法:1. 启动应用程序组件可以使用Intent启动活动、服务或广播接收器。

例如,启动另一个活动可以使用以下代码:```Intent intent = new Intent(this, AnotherActivity.class); startActivity(intent);```其中,第一个参数是上下文,第二个参数是要启动的活动类。

2. 传递数据可以使用Intent传递数据,例如启动另一个活动,并且传递一些数据。

以下是传递字符串和整数的示例代码:```Intent intent = new Intent(this, AnotherActivity.class); intent.putExtra("message", "Hello World");intent.putExtra("number", 123);startActivity(intent);```在另一个活动中,可以使用以下代码获取所传递的数据:```Intent intent = getIntent();String message = intent.getStringExtra("message");int number = intent.getIntExtra("number", 0);```其中,getStringExtra()和getIntExtra()方法用于获取传递的字符串和整数。

3. 执行操作可以使用Intent执行某些操作,例如发送电子邮件或拨打电话。

以下是启动发送电子邮件的示例代码:```Intent intent = new Intent(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(Intent.EXTRA_EMAIL,"***************"); intent.putExtra(Intent.EXTRA_SUBJECT, "邮件的主题");intent.putExtra(Intent.EXTRA_TEXT, "邮件的正文");startActivity(Intent.createChooser(intent, "选择一个邮箱客户端"));```其中,setType()方法设置发送邮件的类型为纯文本,putExtra()方法设置电子邮件的相关信息,createChooser()方法创建一个选择器来选择邮箱客户端。

Android组件系列----Intent详解

Android组件系列----Intent详解

Android组件系列----Intent详解【声明】欢迎转载,但请保留⽂章原始出处→_→【正⽂】Intent组件虽然不是四⼤组件,但却是连接四⼤组件的桥梁,学习好这个知识,也⾮常的重要。

⼀、什么是Intent1、Intent的概念:Android中提供了Intent机制来协助应⽤间的交互与通讯,或者采⽤更准确的说法是,Intent不仅可⽤于应⽤程序之间,也可⽤于应⽤程序内部的activity, service和broadcast receiver之间的交互。

Intent这个英语单词的本意是“⽬的、意向、意图”。

Intent是⼀种运⾏时绑定(runtime binding)机制,它能在程序运⾏的过程中连接两个不同的组件。

通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来响应。

activity、service和broadcast receiver之间是通过Intent进⾏通信的,⽽另外⼀个组件Content Provider本⾝就是⼀种通信机制,不需要通过Intent。

我们来看下⾯这个图就知道了:如果Activity1需要和Activity2进⾏联系,⼆者不需要直接联系,⽽是通过Intent作为桥梁。

通俗来讲,Intnet类似于中介、媒婆的⾓⾊。

2、对于向这三种组件发送intent有不同的机制:使⽤Context.startActivity() 或 Activity.startActivityForResult(),传⼊⼀个intent来启动⼀个activity。

使⽤ Activity.setResult(),传⼊⼀个intent来从activity 中返回结果。

将intent对象传给Context.startService()来启动⼀个service或者传消息给⼀个运⾏的service。

将intent对象传给 Context.bindService()来绑定⼀个service。

Intent的五种形式

Intent的五种形式

●Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。

通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来请求。

●在这些组件之间的通讯中,主要有Intent协助完成的。

Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。

●因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。

●Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent(意图),Intent提供了一种通用的消息系统,它允许在你的应用程序与其他应用程序间传递Intent来执行动作和产生事件。

使用Intent可以激活Android应用的三个核心组件:Activity、Service、BroadcastReceiver。

●对于明确指出了目标组件名称的Intent,我们称之为“显式Intent”对于没有明确指出目标组件名称的Intent,则称之为“隐式Intent”。

●Android系统使用Intent Filter 来过滤掉与Intent Filter内容不符的隐式Intent,一个没有声明Intent Filter的组件只能响应指明自己名字的显式Intent请求,而无法响应隐式Intent请求。

如果声明了则两者都可响应。

●在通过和intent-filter比较来解析Intent请求时,Android将以下三个因素作为选择的参考标准。

(Action、Data、Category)●应用程序的组件可以声明一个甚至多个intent-filter。

●隐式Intent和IntentFilter进行比较式的三要素是Intent的动作、数据以及类别。

Intent 详解

Intent  详解

Intent 详解概念:Intent是执行某操作的一个抽象描述概述:Intent包含四个方面的内容:Action ,data Catagories,extrasAction要执行的动作(action)的一个简要描述. 通过setAction()方法或在清单文件AndroidManifest.xml中设置。

默认为:DEFAULT。

标准的Activity Actions:这些Action是被通过startActivity (启动),其中最常用的连个∙ACTION_MAIN:Android Application的入口,每个Android应用必须且只能包含一个此类型的Action声明。

∙ACTION_VIEW:系统根据不同的Data类型,通过已注册的对应Application显示数据。

∙ACTION_ATTACH_DATA:表明某些数据可以被附加到其他地方,例如,照片可以附加到联系人中,这主要由接受着决定数据被附加到那里,而不是由Intent决定最终目的地。

∙ACTION_EDIT:系统根据不同的Data类型,通过已注册的对应Application编辑示数据∙ACTION_PICK:从数据中得到相应的数据项∙ACTION_CHOOSER:在程序执行前,显示多个可以选择的Activity,供用户选择∙ACTION_GET_CONTENT:返回用户指定的数据类型(与ACTION_PICK不同的是,这里只是指定用户想要的数据类型,而不是数据的存储URI或者其他用户可以得到数据的路径)∙ACTION_DIAL:打开系统默认的拨号程序,如果Data中设置了电话号码,则自动在拨号程序中输入此号码。

∙ACTION_CALL:直接呼叫Data中所带的号码。

∙ACTION_SEND:由用户指定发送方式进行数据发送操作。

∙ACTION_SENDTO:系统根据不同的Data类型,通过已注册的对应Application进行数据发送操作。

android intent原理

android intent原理

android intent原理在 Android 中,Intent 是一种用于在不同组件 如活动、服务、广播接收器)之间传递消息和执行操作的机制。

Intent 的原理主要包括两个方面:通信和动作。

1.通信:Intent 是在 Android 组件之间进行通信的载体。

它可以用来:•启动组件:比如启动另一个活动 Activity)、启动服务 Service)或发送广播 Broadcast)。

•传递数据:可以携带数据 称为 Extras),这些数据可以是基本类型 如字符串、整数等)或者是复杂的对象,用于在组件之间传递信息。

2.动作:Intent 还可以指定执行的动作,这决定了接收 Intent 的组件应该执行什么样的操作。

动作是通过 Intent 中的 action 字段来定义的,比如:•ACTION_VIEW:用于查看数据,比如打开一个网页或显示图片。

•ACTION_SEND:用于发送数据,比如发送邮件或分享内容。

Intent 的工作原理可以概括为以下几个步骤:1.创建 Intent:通过构造函数创建 Intent 对象,并设置要执行的动作 Action)、要操作的数据 Data)以及其他必要的信息 Extras)。

2.启动目标组件:使用 Intent 启动目标组件 比如启动一个活动、发送广播或启动服务)。

这可以通过startActivity()、startActivityForResult()、sendBroadcast()、startService() 等方法实现。

3.目标组件响应:接收 Intent 的目标组件根据其接收到的 Intent 中的信息执行相应的操作。

比如,活动可以根据收到的 Intent 执行特定的操作,或者服务可以在后台处理接收到的 Intent。

Android 系统会根据 Intent 中的信息找到合适的组件来执行相应的操作。

这个匹配过程可以通过 Intent 中的信息 例如 Action、Category、Data、Type 等)以及清单文件中的声明 例如 <intent-filter> 标签)来确定哪个组件能够最好地处理这个 Intent。

intent构造函数

intent构造函数

intent构造函数Intent构造函数:Android应用间通信的重要工具在Android开发中,应用间通信是非常重要的一环。

而Intent构造函数则是实现应用间通信的重要工具之一。

Intent构造函数是Android中的一个类,它可以用来传递消息、启动Activity、启动Service等。

在本文中,我们将详细介绍Intent构造函数的使用方法和注意事项。

Intent构造函数的基本用法Intent构造函数的基本用法非常简单。

我们可以通过以下代码创建一个Intent对象:Intent intent = new Intent();这个Intent对象可以用来传递消息、启动Activity、启动Service 等。

例如,我们可以通过以下代码启动一个Activity:Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent);这个代码片段中,我们创建了一个Intent对象,并指定了要启动的Activity的类名。

然后,我们调用startActivity()方法启动这个Activity。

除了启动Activity,Intent构造函数还可以用来启动Service。

例如,我们可以通过以下代码启动一个Service:Intent intent = new Intent(MainActivity.this, MyService.class);startService(intent);这个代码片段中,我们创建了一个Intent对象,并指定了要启动的Service的类名。

然后,我们调用startService()方法启动这个Service。

Intent构造函数的注意事项在使用Intent构造函数时,需要注意以下几点:1. Intent构造函数的第一个参数是Context对象。

这个Context对象可以是Activity、Service、Application等。

Intent七大属性

Intent七大属性

Intent七⼤属性⼀、Intent的作⽤是什么?1、Intent ⽤于封装程序的”调⽤意图“。

两个Activity之间,可以把需要交换的数据封装成Bundle对象,然后使⽤Intent携带Bundle对象,实现两个Activity之间的数据交换;2、Intent还是各种应⽤程序组件之间通信的重要媒介。

不管想启动⼀个Service、Acitivity还是BroadcastReceiver,Android均使⽤统⼀的Intent对象来封装这种”启动意图“。

很明显使⽤Intent提供了⼀致的编程模型;3、Intent还有⼀个好处,如果应⽤程序只是想启动具有某种特征的组件,并不想和某个具体的组件耦合,则可以通过在intent-filter中配置相应的属性进⾏处理,与stucts2中的MVC框架思路类似。

//①.第⼀种⽅式:开启另⼀个Activity1. //Intent intent=new Intent(this,SecondActivity.class);2. Intent intent=new Intent();//②.第⼆种⽅式:使⽤ComponentName//使⽤ComponentName组件名来开启另⼀个Activity1. ComponentName component=new ComponentName(this, SecondActivity.class);//第⼆个参数是包含包名,类名的⼀个完整字符串1. ComponentName component=new ComponentName(this, "com.qianfeng.day06_intentattribute01.SecondActivity");//第⼀个参数是单纯的包名;第⼆个参数是包含包名,类名的⼀个完整字符串1. ComponentName component=new ComponentName("com.qianfeng.day06_intentattribute01", "com.qianfeng.day06_intentattribute01.SecondActivity");2. intent.setComponent(component);//③.第三种⽅式:setClass也可以实现跳转1. intent.setClass(this, SecondActivity.class);//④.第四种⽅式:setClassName跳转⽅式1. intent.setClassName(this, "com.qianfeng.day06_intentattribute01.SecondActivity");//⑤.第五种:通过隐式意图开启另⼀个Activity1. intent.setAction("ergouzisimida");//其实系统默认就有这句话,默认省略了这句话1. intent.addCategory("android.intent.category.DEFAULT");1. startActivity(intent);⼆、Intent对象的七个属性<1>ComponentName属性:1、指定了ComponentName属性的Intent已经明确了它将要启动哪个组件,因此这种Intent被称为显式Intent,没有指定ComponentName属性的Intent被称为隐式Intent。

Intent详解

Intent详解
ACTION_RUN 运行数据,无论怎么
ACTION_SYNC 同步执行一个数据
ACTION_PICK_ACTIVITY 为已知的Intent选择一个Activity,返回别选中的类
ACTION_SEARCH 执行一次搜索
ACTION_WEB_SEARCH 执行一次w 工场测试的主要进入点
如果flag设置的是FLAG_ACTIVITY_SINGLE_TOP,则意味着如果Activity已经是运行在Task的top,则该Activity将不会再被启动。
三.Intent的解析
在应用中,我们可以以两种形式来使用Intent:
直接Intent:指定了component属性的Intent(调用setComponent(ComponentName)或者setClass(Context,Class)来指定)。通过指定具体的组件类,通知应用启动对应的组件。
间接Intent:没有指定component属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在所有的可用组件中,确定满足此Intent的组件。
对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接的Intent,通过解析,将Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。
ACTION_PACKAGE_RESTARTED 用户重新开始一个包,包的所有进程将被杀死,所有与其联系的运行时间状态应该被移除,包括包名(重新开始包程序不能接收到这个广播)
ACTION_PACKAGE_DATA_CLEARED 用户已经清楚一个包的数据,包括包名(清除包程序不能接收到这个广播)

Intent

Intent

other „„„ Application4
只用匹配View,category采用通配符形式,匹配上Application1,Application2, Application4
IntentFilter Action:Intent.View Category:Bbit
Intent class
Application1
action Intent.View category Alter data
Application2
Action:Intent.View Category:Alter
Application3
Action:Intent.View Category:Alter Data:http://www Action:Intent.View Category:Alter Category:Bbit
Intent class
Application1
cation Intent.View category Alter data http://www other „„„
Application2
Action:Intent.View Category:Alter
Application3
Action:Intent.View Category:Alter Data:http://www Action:Intent.Edit Category:Alter Data:http://www
Intent data content:///index ContentProvider ContentResolver
getType(Uri)
Application
IntentFilter. setType(“vnd.android /vnd.huawei.note”)

intent用法

intent用法

intent用法- Intent是什么?Intent是Android系统中的一个重要组件,用于在应用程序之间传递消息和数据。

它可以启动一个Activity、Service或者BroadcastReceiver,也可以传递数据给其他组件。

- Intent的分类Intent分为显式Intent和隐式Intent两种。

显式Intent:指定了组件的完整类名,用于启动指定的Activity、Service或者BroadcastReceiver。

隐式Intent:没有指定组件的完整类名,而是通过指定Intent 的Action、Category和Data等属性来匹配系统中已注册的组件。

- Intent的构成Intent由Action、Category、Data、Type、Component和Extras等属性组成。

Action:指定Intent要执行的操作,比如打开一个Activity或者发送一条广播。

Category:指定Intent所属的类别,比如DEFAULT、BROWSABLE 等。

Data:指定Intent要操作的数据,比如打开一个网页或者查找一个联系人。

Type:指定Intent要操作的数据类型,比如文本、图片、音频等。

Component:指定Intent要启动的组件的完整类名。

Extras:携带Intent所需的附加数据,比如传递一个字符串、整数或者对象等。

- Intent的使用场景Intent广泛应用于Android应用程序的各个方面,比如:启动Activity:通过Intent启动一个Activity,让用户进入另一个界面。

启动Service:通过Intent启动一个Service,执行后台任务。

发送Broadcast:通过Intent发送一条广播,让其他组件接收并处理。

启动ActivityForResult:通过Intent启动一个Activity,并等待其返回结果。

- Intent的注意事项使用Intent时需要注意以下几点:Intent的Action、Category和Data等属性需要与组件的Intent Filter匹配才能启动成功。

intent的名词解释

intent的名词解释

intent的名词解释Intent,这个词汇源于拉丁语的"intentus",被广泛运用于语言学、心理学、计算机科学等多个学科领域。

在不同的背景下,Intent有着略微不同的含义和用法。

一、语言学中的Intent在语言学领域,Intent被用来描述说话者或者写作者表达自己意图和目的的能力。

语言是人类交流的重要媒介,而Intent则是转化思想、情感和意图至语言形式的重要纽带。

Intent不仅仅是事实陈述,它包含了说话者或作者所传递的情感色彩以及所表达的意图。

通过语言交际,人们能够更好地理解彼此的意图,进而更好地沟通。

二、心理学中的Intent在心理学中,Intent被用来描述个体思想和行为的目的和意图。

意图是指个体明确或者隐含地表达出来的预期结果或期望。

人的行为往往受到个体的意图和目的的驱动,Intent的概念帮助我们理解人们行为背后的深层动机。

Intent在心理学中也与人的动机密切相关。

人们的行为会受到自身追求目标、满足需求和实现愿望的内在动机所驱动。

Intent的研究有助于我们更好地理解人类行为的意图背后,从而有效地应对和帮助个体。

三、计算机科学中的Intent在计算机科学中,Intent则用来描述用户在使用移动设备、应用程序或者搜索引擎时所表达的意图。

Intent通常用于移动应用程序中的交互设计和用户体验研究,以更好地理解用户的需求和期望。

通过分析用户的Intent,开发人员可以设计更加智能、贴心的应用程序,使用户体验更加顺畅和高效。

例如,在语音助手中,用户可以通过语音指令表达自己的意图,比如搜索特定信息、发送消息、获取天气预报等等。

四、Intent的综合应用Intent作为一个概念,在语言学、心理学和计算机科学等多个领域都有着广泛的应用。

例如,某人通过写作来表达自己的思想和情感,这就涉及了语言学中的Intent。

另外,尽管我们不常意识到,但我们的日常行为往往也有着明确的Intent,比如早上刷牙是为了保持口气清新、睡前读书是为了放松心情。

Intent详解

Intent详解

在你开始与拨号盘交互之前,你需要你理解你要使用的代码类型。

Andriod使用Intent在应用程序中定义工作。

一旦你掌握了Intents的使用,一个全新的应用程序开发世界将会想你敞开。

本节定义了Intent是什么和如何使用它。

一个Intent是Android从一个Activity(活动)传递信息到另外一个活动的方法。

你可以认为一个Intent是一个活动间交换的信息。

例如,假定你有一个活动需要来打开一个网页浏览器并且在Android设备上显示一个页面。

你的活动应当发送一个“在网页浏览器中打开某页的Intent(意图)”,就像一个WEB_SEARCH_ACTION的Intent,一个Android Intent解答器。

Intent解答器从语法上分析一个活动的列表并且选择最匹配你的Intent 的一个。

那就是,网页浏览器的活动。

Intent解答器然后传递你的网页到浏览器中并且启动网页浏览器活动。

Intents被分成两个主要目录● Activity Action Intents(活动动作意图)Intents用来呼叫应用程序以外的活动。

只有一个活动可以处理Intent。

例如,对于网页浏览器,你需要打开网页浏览器活动来显示一个页面。

● Broadcast Intents (广播意图)Intents 被送出到多个活动来处理。

一个被Android 发出的广播意图的例子就是,当前电池的电量。

任何活动处理这个意图并适时的反应。

——例如,如果电池电量低到一定程度,取消一个活动。

表格7-1 列出并且描述了通用的,可以使用活动动作意图。

正如你注意到的一样,大多数情况下,从Intent名字可以看出这个Intent是做什么的。

注意本章中的应用程序会用到列在表7-1中的Intents:CALL_ACTION 和DIAL_ACTION。

这些Intents使你有进入手机拨号和呼叫的能力。

表格7-2列出并描述了通用的广播意图。

当你需要为一个定义的Intent建立一个接受器时,请参考这个表。

Intent对象详解

Intent对象详解

Intent对象详解定义:Intent封装着Android程序需要启动某个组件的“意图”,不仅如此,Intent还是应⽤程序组件之间通信的媒介。

⼀、Intent的属性和intent-filter配置Compenent属性: >>CompenentName(String pkg,String cls): >>CompenentName(Context pkg,String cls): >>CompenentName(StriContext ng pkg,Class<?> cls):统⼀都是创建pkg所对应的包下的cls类所对应的组件 intent.setComponent(comp);除此之外Intent还包含了如下三个⽅法 >>setClass(Context pkgContext ,Class<?> cls):设置Intent要启动对应的类; >>setClassName(Context pkgContext ,String className)设置要启动组件对应的类名 >>setClassName(Context pkgName ,String className)设置要启动组件对应的类名其实Intent已经提供了⼀个简化的构造器: Intent intent = new Intent(Activity.this,SecondActivity.class);对于向这三种组件发送intent有不同的机制:使⽤Context.startActivity() 或 Activity.startActivityForResult(),传⼊⼀个intent来启动⼀个activity。

使⽤ Activity.setResult(),传⼊⼀个intent来从activity中返回结果。

将intent对象传给Context.startService()来启动⼀个service或者传消息给⼀个运⾏的service。

Intent类型

Intent类型

Intent类型intent是⼀个消息传递对象,你可以使⽤它从其他应⽤组件请求操作。

intent的常⽤操作。

启动Activity activity已知是⼀个android的⼀个界⾯,通过调⽤startActivity(),我们可以启动⼀个新的activity,并且实现界⾯的跳转。

并且可以传递⼀些简单的数据。

如果我们希望能够从⼀个activity获取result的时候,我们可以调⽤startActivityForResult().这样,我们就可以启动⼀个新的activity,并且当这个新的activity执⾏完成后,我们可以得到⼀些返回的数据。

启动服务 service是⼀个不会使⽤⽤户界⾯,也就是在后台运⾏的⼀个线程或者进程。

将intent传递给startService(),我们可以启动⼀个服务完成⼀些操作,如播放⾳乐等。

intent的主要作⽤是⽤来设置要启动的服务过程,并且可以传递⼀些简单的数据。

传递⼴播 ⼴播式android的⼀个相当重要的组件,⼴播是任何应⽤都可以接受的消息。

系统针对系统事件传递各种⼴播。

通过intent传递给sendBroadcast(),sendOrderBroadcast()或者sendStickyBroadcast().,这样可以将⼴播传递给其他应⽤。

intent的使⽤分为两种类型 显式使⽤intent:明确指定activity来启动组件。

这样使⽤⽐较简单,但是有明确的要求就是,我们必须在我们需要明确的知道要启动的activity的类名。

创建显式intent启动activity和service,系统将⽴即启动intent对象中指定的应⽤组件。

代码:Intent intent=new Intent();intent.setClass(MainActivity.this, DisplayMessageActivity.class);EditText edit=(EditText)findViewById(R.id.edit1);String message=edit.getText().toString();intent.putExtra("message", message);startActivity(intent);显式使⽤intent 隐式使⽤intent:不特别指定要启动相应的activity的类名,⽽只要声明要执⾏的常规操作,从⽽允许其他应⽤中的组件来处理它。

Intent的作用

Intent的作用

Intent的作⽤1.Intent的作⽤⼀个Intent对象包含了⼀组信息:Component name组件名称:intent会根据component name要启动哪⼀个组件(activity,service,contentProvider)Action://ACTION_CALL、ACTION_EDIT。

指定另外⼀个Activity要做些什么Data:从⼀个Activity向另⼀个Activity传送怎样的数据CategoryExtras额外的:事先向⼀个activity的intent中存⼊的键值对Flags注意:Activity之间通过intent传递数据不⼀定要求是在同⼀个应⽤中2.Activity02.javapackage mars.activity02;import android.app.Activity;import android.content.Intent;import .Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class Activity02 extends Activity {//代表按钮对象的引⽤private Button myButton = null;//复写⽗类当中的onCreate⽅法,Activity第⼀次运⾏时会调⽤这个⽅法@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//为Activity设置布局管理⽂件setContentView(yout.main);//以下两⾏代码是根据控件的ID来得到控件对象myButton = (Button)findViewById(R.id.myButton);//为按钮对象设置监听器对象myButton.setOnClickListener(new MyButtonListener());}//以下是⼀个内部类,这个内部类的对象是⼀个监听器(如果⼤家对监听器不是很熟悉,可以参考设计模式当中的观察者模式)class MyButtonListener implements OnClickListener{//⽣成该类的对象,并将其注册到控件上。

02 Intent使用

02 Intent使用

拒绝不需要类型的Intent,但是仅限于隐式Intent。显式Intent无论其内容
总可以发送给它的目标,过滤器并不干预。但是,隐式Intent只有在通过 组件的Intent过nt
在Eclipse中创建Android项目,名称为6.3,在Activity中使用包含预定义
wwwmrbccdcom2使用包含预定义动作的隐式intent3使用包含自定义动作的隐式intentintent过滤器activityservice和broadcastreceiver能定义多个intent过滤器来通知系统它们可以处理哪些隐式intent
Intent使用
本讲大纲: 1、Intent过滤器 2、使用包含预定义动作的隐式Intent 3、使用包含自定义动作的隐式Intent
动作的隐式Intent启动另外一个Activity。
使用包含自定义动作的隐式Intent
在Eclipse中创建Android项目,名称为6.4,在Activity中使用包含自定义
动作的隐式Intent启动另外一个Activity。
Thank you
还有什么疑问可以到提出 也可以以发送邮件到 mingrisoft@
支持网站:
Intent过滤器
Activity、Service和BroadcastReceiver能定义多个Intent过滤器来通知系
统它们可以处理哪些隐式Intent。每个过滤器描述组件的一种能力,以及 该组件可以接收的一组Intent。实际上,过滤器接收需要类型的Intent,
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Intent,Android应用核心探秘(1)2010-08-1810:13oxen javaeye我要评论(0)Intent可以算得上Android应用开发的重点之一,它负责对应用中各个组件之间的通讯与相互协调和调用。

本文将就Intent做系统而详细的描述。

之前曾为大家报道过《Android应用程序开发的四个重要组成部分》,详细介绍了在一个Android应用中重要的四个组成部分。

而这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的Android应用。

在这些组件之间的通讯中,主要是由Intent 协助完成的。

Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。

因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。

例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity 为listActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为detailActivity),为了实现这个目的,listActivity需要构造一个Intent,这个Intent用于告诉系统,我们要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startActivity(Intent intent),将构造的Intent传入,系统会根据此Intent中的描述,到ManiFest 中找到满足此Intent要求的Activity,系统会调用找到的Activity,即为detailActivity,最终传入Intent,detailActivity则会根据此Intent中的描述,执行相应的操作。

一、抽象描述要描述什么在Android参考文档中,对Intent的定义是执行某操作的一个抽象描述(确实很抽象)。

我们先来看看这里的抽象描述,到底描述了什么。

首先,是要执行的动作(action)的一个简要描述,如VIEW_ACTION(查看)、EDIT_ACTION(修改)等,Android为我们定义了一套标准动作:◆MAIN_ACTION◆VIEW_ACTION◆EDIT_ACTION◆PICK_ACTION◆GET_CONTENT_ACTION◆DIAL_ACTION◆CALL_ACTION◆SENDTO_ACTION◆ANSWER_ACTION◆INSERT_ACTION◆DELETE_ACTION◆RUN_ACTION◆LOGIN_ACTION◆CLEAR_CREDENTIALS_ACTION◆SYNC_ACTION◆PICK_ACTIVITY_ACTION◆WEB_SEARCH_ACTION此外,我们还可以根据应用的需要,定义我们自己的动作,并可定义相应的Activity来处理我们的自定义动作。

其次,是执行动作要操作的数据(data),Android中采用指向数据的一个URI来表示,如在联系人应用中,一个指向某联系人的URI可能为:content://contacts/1。

这种URI表示,通过ContentURI这个类来描述,具体可以参考.ContentURI类的文档。

以联系人应用为例,以下是一些action/data对,及其它们要表达的意图:◆VIEW_ACTION content://contacts/1--显示标识符为"1"的联系人的详细信息◆EDIT_ACTION content://contacts/1--编辑标识符为"1"的联系人的详细信息◆VIEW_ACTION content://contacts/--显示所有联系人的列表PICK_ACTION content://contacts/--显示所有联系人的列表,并且允许用户在列表中选择一个联系人,然后把这个联系人返回给父activity。

例如:电子邮件客户端可以使用这个Intent,要求用户在联系人列表中选择一个联系人另外,除了action和data这两个重要属性外,还有一些附加属性:◆category(类别),被执行动作的附加信息。

例如LAUNCHER_CATEGORY表示Intent 的接受者应该在Launcher中作为顶级应用出现;而ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个,这些动作可以在同一块数据上执行。

◆type(数据类型),显式指定Intent的数据类型(MIME)。

一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。

◆component(组件),指定Intent的的目标组件的类名称。

通常Android会根据Intent中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。

但是,如果component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。

指定了这个属性以后,Intent的其它所有属性都是可选的。

◆extras(附加信息),是其它所有附加信息的集合。

使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。

总之,action、data/type、category和extras一起形成了一种语言。

这种语言使系统能够理解诸如“查看某联系人的详细信息”之类的短语。

随着应用不断的加入到系统中,它们可以添加新的action、data/type、category来扩展这种语言。

应用也可以提供自己的Activity来处理已经存在的这样的“短语”,从而改变这些“短语”的行为。

二、Android如何解析Intent在应用中,我们可以以两种形式来使用Intent:直接Intent:指定了component属性的Intent(调用setComponent(ComponentName)或者setClass(Context,Class)来指定)。

通过指定具体的组件类,通知应用启动对应的组件。

间接Intent:没有指定comonent属性的Intent。

这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。

对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接Intent,通过解析,将Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。

Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。

在这个解析过程中,Android是通过Intent的action、type、category这三个属性来进行判断的,判断方法如下:如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配;如果Intent没有提供type,系统将从data中得到数据类型。

和action一样,目标组件的数据类型列表中必须包含Intent的数据类型,否则不能匹配。

如果Intent中的数据不是content:类型的URI,而且Intent也没有明确指定它的type,将根据Intent中数据的scheme(比如http:或者mailto:)进行匹配。

同上,Intent的scheme 必须出现在目标组件的scheme列表中。

如果Intent指定了一个或多个category,这些类别必须全部出现在组建的类别列表中。

比如Intent中包含了两个类别:LAUNCHER_CATEGORY和ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。

三、应用例子以下,以Android SDK中的便笺例子来说明,Intent如何定义及如何被解析。

这个应用可以让用户浏览便笺列表、查看每一个便笺的详细信息。

xml代码1<manifest xmlns:android="/apk/res/android"2package="com.google.android.notepad">3<application android:icon="@drawable/app_notes"4android:label="@string/app_name">56<provider class="NotePadProvider"7android:authorities="com.google.provider.NotePad"/>89<activity class=".NotesList"android:label="@string/title_notes_list">10<intent-filter>11<action android:value="android.intent.action.MAIN"/>12<category android:value="UNCHER"/>13</intent-filter>14<intent-filter>15<action android:value="android.intent.action.VIEW"/>16<action android:value="android.intent.action.EDIT"/>17<action android:value="android.intent.action.PICK"/>18<category android:value="android.intent.category.DEFAULT"/>19<type android:value="vnd.android.cursor.dir/vnd.google.note"/> 20</intent-filter>21<intent-filter>22<action android:value="android.intent.action.GET_CONTENT"/>23<category android:value="android.intent.category.DEFAULT"/>24<type android:value="vnd.android.cursor.item/vnd.google.note"/> 25</intent-filter>26</activity>2728<activity class=".NoteEditor"android:label="@string/title_note">29<intent-filter android:label="@string/resolve_edit">30<action android:value="android.intent.action.VIEW"/>31<action android:value="android.intent.action.EDIT"/>32<category android:value="android.intent.category.DEFAULT"/>33<type android:value="vnd.android.cursor.item/vnd.google.note"/> 34</intent-filter>35<intent-filter>36<action android:value="android.intent.action.INSERT"/>37<category android:value="android.intent.category.DEFAULT"/>38<type android:value="vnd.android.cursor.dir/vnd.google.note"/> 39</intent-filter>40</activity>4142<activity class=".TitleEditor" android:label="@string/title_edit_title"43android:theme="@android:style/Theme.Dialog">44<intent-filter android:label="@string/resolve_title">45<actionandroid:value="com.google.android.notepad.action.EDIT_TITLE"/>46<category android:value="android.intent.category.DEFAULT"/>47<category android:value="android.intent.category.ALTERNATIVE"/> 48<categoryandroid:value="android.intent.category.SELECTED_ALTERNATIVE"/>49<type android:value="vnd.android.cursor.item/vnd.google.note"/> 50</intent-filter>51</activity>5253</application>54</manifest>例子中的第一个Activity是com.google.android.notepad.NotesList,它是应用的主入口,提供了三个功能,分别由三个intent-filter进行描述:1、第一个是进入便笺应用的顶级入口(action为android.app.action.MAIN)。

相关文档
最新文档