Android属性之Intent


什么是Intent?

An intent is an abstract description of an operation to be performed
一个Intent就是一次对将要执行的操作的抽象描述。

举例:

1.拨打电话

Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse(“tel:”+telPhone));
<uses-permission android:name=”android.permission.CALL_PHONE”/>

2.发送短信

Intent intent=new Intent(Intent.ACTION_SENDTO,Uri.parse(“smsto:5554”));
intent.putExtra(“sms_body”, “Hello”);
startActivity(intent);
<uses-permission android:name=”android.permission.SEND_SMS”/>

3.启动新的Activity

4.传递参数

5.返回参数

—————————————————

以下内容摘自《android开发教程》

—————————————————

Intent :

调用 Android 专有类 Intent 进行架构屏幕之间的切换。Intent 是描述应用想要做什么。Intent 数据结构两个最重要的部分是动作和动作对应的数据。典型的动作类型有:MAIN(活动的门户)、VIEW、PICK、EDIT等。而动作对应的数据则以 URI 的形式进行表示。例如:要查看某个人的联系方式,你需要创建一个动作类型为 VIEW 的 Intent,以及一个表示这个人的 URI。

Android 使用了 Intent 这个特殊类,实现在屏幕与屏幕之间移动。Intent 类用于描述一个应用将会做什么事。 Intent 的描述结构中,在有两个最重要的部分:动作和动作对应的数据。典型的动作类型有: MAIN(activity的门户)、VIEW、PICK、EDIT 等。而动作对应的数据则以 URI 的形式进行表示。例如:要查看一个人的联系方式,你需要创建一个动作类型为 VIEW 的 intent,以及一个表示这个人的 URI。

与之有关系的一个类叫 IntentFilter。相对于 intent 是一个有效的做某事的请求,一个 intentfilter 则用于描述一个 activity(或者 IntentReceiver)能够操作哪些 intent。一个 activity 如果要显示一个人的联系方式时,需要声明一个 IntentFilter,这个 IntentFilter 要知道怎么去处理 VIEW 动作和表示一个人的 URI。IntentFilter 需要在 AndroidManifest.xml 中定义。

通过解析各种 intent,从一个屏幕导航到另一个屏幕是很简单的。当向前导航时,activity 将会调用startActivity(IntentmyIntent)方法。然后,系统会在所有安装的应用程序中定义的 IntentFilter 中查找,找到最匹配 myIntent 的 Intent 对应的 activity。新的 activity 接收到myIntent 的通知后,开始运行。当 startActivity 方法被调用将触发解析 myIntent 的动作,这个机制提供了两个关键好处:

A、Activities 能够重复利用从其它组件中以 Intent 的形式产生的一个请求;
B、Activities 可以在任何时候被一个具有相同 IntentFilter 的新的 Activity 取代。

发表评论