Android笔记 Intent用法总结

Intent:

官方解释:

An intent is an abstract description of an operation to be performed. It can be used with startActivity to
launch an ActivitybroadcastIntent to
send it to any interested BroadcastReceiver components,
and startService(Intent) or bindService(Intent,
ServiceConnection, int)
 to communicate with a background Service.

一个意图是一个抽象的描述要执行一个操作。它可以用于startActivity推出一个活动,broadcastIntent
BroadcastReceiver组件将其发送给任何感兴趣,和由startService(意图)或bindService(ServiceConnection意图,int)与后台通信服务。

An
Intent provides a facility for performing late runtime binding between the code in different applications. Its
most significant use is in the launching of activities, where it can be thought of as the glue between activities. It
is basically a passive data structure holding an abstract description of an action to be performed.

一个意图提供了一个工具来执行代码在不同应用程序之间的延迟运行时绑定。最重要的用途是活动的推出,可以被认为是活动之间的胶水。它基本上是一个被动持有一个抽象数据结构的描述一个动作。

自己解释Intent的作用和用法:

Intent
是Android程序中各个组件之间进行交互的重要方式之一,它既可以在当前Activity中指定想要完成的动作,还可以在不同组件间进行数据传递。Intent可分为两种,显示Intent和隐式Intent。

1.显示Intent

首先介绍显示Intent的用法,通过其中一个Intent的构造方法Intent(Context pageContext,Class<?> cls)如下构造方法实例化一个显示Intent,这个构造函数接收两个参数,第一个参数Context需要填入一个启动活动的上下文,一般为当前Activity,第二个参数Class是指定要启动的目标活动,通过这个构造函数就可以构造出代表我们”意图”的Intent对象。

修改FirstActivity中按钮的点击事件,代码如下:

在上面例子中,我们首先构造了一个Intent(显示Intent),传入FirstActivity.this作为上下文,SecondActivity.class作为目标活动,这样我们就明确了我们的意图,即在FirstActivity这个活动中通过点击mybutton按钮打开SecondActivity这个活动。然后通过Activity类的startActivity()方法来执行该意图操作。startActivity()方法是Activity类中提供的,专门用于启动活动的方法,它接收一个Intent对象。在上例中我们将构建好的意图对象传入该方法就可以启动目标活动。

2.隐式Intent

与显式Intent相比隐式Intent是一种比较含蓄的Intent。它不指定要启动哪个活动,而是通过配置一些相关信息如:action,category等信息,然后交给系统去分析并找出合适的活动去启动。

Action:用来指明要实施的动作是什么,比如说ACTION_VIEW, ACTION_EDIT等。具体的可以查阅android SDK-> reference中的Android.content.intent类,里面的constants中定义了所有的action。

一些常用的Action:

ACTION_CALL  启动一个电话.

ACTION_EDIT 显示用户编辑的数据.

ACTION_MAIN  作为Task中第一个Activity启动

ACTION_SYNC 同步手机与数据服务器上的数据.

ACTION_BATTERY_LOW 电池电量过低警告.

ACTION_HEADSET_PLUG 插拔耳机警告

ACTION_SCREEN_ON 屏幕变亮警告.

ACTION_TIMEZONE_CHANGED 改变时区警告.

Category:一个字符串,包含了关于处理该intent的组件的种类的信息。一个intent对象可以有任意个category。intent类定义了许多category常数.

addCategory()方法为一个intent对象增加一个category,

removeCategory删除一个category,

getCategories()获取intent所有的category.

修改FirstActivity中的按钮点击事件,

在上面例子中,我们首先初始化了一个Intent对象,并指定action参数。其次调用Intent中的addCategory()方法来添加一个category。每个Intent中只能指定一个action,但却能指定多个category。

为了能使SecondActivity能继续响应该Intent,我们可以在AndroidManifest.xml文件下的<Activity>标签下配置<intent -filter>的内容,来指定当前活动能够响应的action和category。

3.通过Intent向下一个活动传递数据

通过Intent对象在启动活动时传递数据很简单,执行在当前活动中调用PutExtra()方法把要传递的数据暂存在Intent中,并在新启动的Activity中取出Intent中的数据即可。比如我们可以把FristActivity中的一个字符串传递到SecondActivity中,就可以如下方式实现:

在上面例子中,我们使用显示Intent的方式来启动SecondActivity,并通过putExtra()方法传递一个字符串到SecondActivity。这里putExtra()方法

接收两个参数,第一个是键,第二个是值,代表真正要传递的数据。

接下来我们在SecondActivity中将Intent对象中的数据取出,并进行其他操作,代码如下:

在上面代码中首先通过调用getInstent()方法获取用于启动SecondActivit的Intent,然后调用Intent对象的getStringExtra()方法,传入相应的键名,就可以得到传来的数据。

4.通过Instent对象返回数据给上一个活动

在上面内容中我们介绍了如何通过Intent对象将数据传递给下一个活动。那么这里我们探讨一下如何将数据返回给上一个活动。要将数据返回给上一个活动我们可以调用一个startActivityForResult()方法,该方法也是用来启动活动的,但是这个方法期望在活动销毁的时候能够返回一个结果给上一个活动。startActivityForResult()方法接收两个参数,第一个还是Intent,第二个是请求码用于判断回调的来源,请求吗必须唯一。用法如下:

这里我们使用startActivityForResult(intent,1 );来启动SecondActivity,接下来在SecondActivity中给按钮mybutton2注册点击事件,并在按钮

点击事件中添加返回数据的逻辑,代码如下:

我们首先实例化一个Intent对象,并把要传递的数据封装在该对象中,然后调用setResult()方法。该方法专门用于向上一个活动返回数据,接收两个参数,第

一个参数用于向上一个活动返回处理结果,第二个参数则是把带有数据的Intent传递回去。

由于我们使用startActivityForResult()方法来启动SecondActivity的,在SecondActivity被销毁之后会回调上一个活动的onActivityResult()方法

,因此我们要在FirstActivity中重写该方法来得到数据,如下:

   上例中的onActivityResult()方法有三个参数,第一个requestCode,就是我们在启动活动时传入的请求码,
用来判断消息来源。第二个参数resultCode就是我们在返回数据时传入的处理结果,用来判断处理结果是否成功,
第三个代表携带返回数据的Intent。
时间: 2024-08-29 20:26:25

Android笔记 Intent用法总结的相关文章

我的Android笔记--Intent下,印象中常用的用法

1,拨打电话 Intent intent = new Intent(Intent.ACTION_DIAL); Uri uri = Uri.parse("tel:" + "1511690XXXX"); intent.setData(uri); startActivity(intent); 2,发送短信 Uri uri = Uri.parse("smsto:1511690XXXX"); Intent intent = new Intent(Inten

我的Android笔记--Intent上(我是文档的搬运工)

我是文档的搬运工. Intent,意图,它是一个消息传递对象.对于意图最常见的就是从一个Activity跳转到另一个Activity,或者启动一个服务.发送一个广播等等. 它分为显式意图和隐式意图,下面是API指南给的解释. 显式 Intent :按名称(完全限定类名)指定要启动的组件.通常,您会在自己的应用中使用显式 Intent 来启动组件,这是因为您知道要启动的 Activity 或服务的类名.例如,启动新 Activity 以响应用户操作,或者启动服务以在后台下载文件. 隐式 Inten

android笔记--Intent和IntentFilter详解

Intent用于启动Activity, Service, 以及BroadcastReceiver三种组件, 同时还是组件之间通信的重要媒介. 使用Intent启动组件的优势1, Intent为组件的启动提供了一致的编程模型. 无论想要启动的组件是Activity, Service, 还是BroadcastReceiver, 都可以使用Intent封装启动的意图.2, 在某些时候, 应用程序只是想启动具有某种特征的组件, 并不想和某个特定的组件耦合. 使用Intent可以方便的达到这种高层次解耦的

Android学习笔记-Intent(一)

Intent对象在Android官方API这样描述:It is a passive data structure holding an abstract description of an operation to be performed. 它是一种数据结构,抽象描述一次将要被执行的操作,其作用是在程序运行过程中连接两个不同的组件. Intent机制的引入,是实现Android应用程序的组件间通信的一种消息机制,它允许你在应用程序的组件间传递 Intent 来执行动作和产生事件,组件可以是跨应

Android基础知识:Day06 Activity生命周期和Intent用法

Day06 Activity生命周期和Intent用法 一.Activity的跳转 1. 创建第二个Activity 需要在清单文件中为其配置一个activity标签 标签中如果带有这个子节点,则会在系统中多创建一个快捷图标 <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.cate

android笔记6——intent的使用

今天挑出一节专门来说一下使用intent和intentfilter进行通信. 场景:一个Activity启动另一个Activity. 前面已经讲了Fragment的切换,Fragment顾名思义是基于碎片切换的,假如我们要切换屏幕,或者是service组件等等,这就要用到Intent. 此外还想说明一下,Intent还具有很好的设计思想在里面的.它将各种"启动意图"封装成一个一致编程模型,利于高层次的解耦. 1.Intent属性 Component属性 先来看一段代码: <spa

Android笔记六.深入理解Intent和IntentFilter(二)

深入理解Intent和IntentFiler(二) Jiangdg_VIP http://blog.csdn.net/u012637501 在上一篇文章中,我们比较详细学习了"Intent"的相关知识,现在将学习如何设置Intent对象的这些属性以及如何使用他们来启动组件.Intent对象是一组信息,我们可以通过设置其Action.Data.Category属性来指定启动哪个组件并完成什么样的动作(包含动作所需的数据). "意图"分为显示intent和隐式inten

Android Intent用法总结

Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用.Intent不仅可用于应用程序之间,也可用于应用程序内部的 Activity / Service之间的交互.因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦. 1. Intent作用 In

Android中Intent笔记

Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件.通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求.比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION给Android,Android就会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,找到网页浏览器的Ac