一、什么是Intent:
在一个Android应用中,Intent是对执行某个操作的一个抽象描述,Intent 负责提供组件之间相互调用的相关信息传递,实现调用者和被调用者之间的解耦。
二、Intent的属性:
Intent是对执行某个操作的一个抽象描述,其描述的内容包括,对执行动作Action的描述、对操作数据的描述、还有4种附加属性的描述。分别介绍如下:
Action
,对执行动作的描述,是个字符串,是对所将执行的动作的描述,在Intent类中定义了一些字符串常量作为标准动作,譬如:
1
|
public static final String ACTION_DIAL = "android.intent.action.DIAL"
|
2
|
public static final String ACTION_SENDTO = "android.intent.action.SENDTO";
|
我们还可以自定义Action,并定义相应的Activity来处理我们自定义的行为。
data
,是对执行动作所要操作的数据的描述,Android中采用URI来表示数据,譬如在联系人应用中,
指向联系人1的URI可能为:content://contacts/1 (由content provider提供的数据类型是content) 。
结合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之外,还有4个属性。
catagory 类别
,是被请求组件的额外描述信息,Intent类中也定义了一组字符串常量表示Intent不同的类别。完整的列表可以看API文档中Intent类的相应部分。
1
|
public
static
final
String CATEGORY_LAUNCHER =
"android.intent.category.LAUNCHER"
;
|
2
|
public
static
final
String CATEGORY_PREFERENCE =
"android.intent.category.PREFERENCE"
;
|
extra 附加信息,
除了data之外,还可以通过extra附加信息,extra属性使用Bundle类型
进行数据传递,我们可以把Bundle当做HashMap来理解,附加数据可以通过 intent.putExtras() 和
intent.getExtras() 进行传入和读取。 就像这样,获取附加信息: Bundle bundle =
intent.getExtras();
添加附加信息: Bundle bundle = new Bundle(); intent.putExtras(bundle);
component 组件
,显式指定Intent的目标组件的名称。如果指定了component属性,系统会直接使用它指定的组件,而非匹配查找。
type 数据类型,
显式指定Intent的数据类型,一般Intent的数据类型都能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型和不再进行推导。
三、解析Intent
Intent是一种在不同组件之间传递的请求信息,是应用程序发出的请求和意图,作为一个完整的消息传递机制,Intent不仅需要发送端,还需要接收端。
当指定了component属性后,就是显式的指定了目标组件,也就是接收端。如果没有明确指定目标组件,那么Android系统会使用 Intent 里的(action,data,category)三个属性来寻找和匹配接收端。
四、IntentFilter
应用程序组件可以使用IntentFilter来向系统说明自己可以响应和处理那些Intent请求。组件一般通过AndroidManifest.xml文件的<Intent-Filter>描述。
<activity android:name=”.MainTinyPhone” android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
五、简单的拨打电话的例子
这是一个简单的拨打电话的程序,它可以截获手机上的拨号按键发出的请求,自己输入号码,并把数据传给系统的打电话程序,从而实现打电话功能。
先上效果图:
按绿色的拨号按钮的时候会呼出一个菜单让你选择使用哪个拨号程序,
我们选择简单拨号程序,出现输入框可以填写电话号码,并拨号
点击拨号后,调用了系统的拨号程序。
最终实现了拨号:
再上代码,MainTinyDial.java的代码:
01
|
package
andorid.basic.lesson8;
|
03
|
import
android.app.Activity;
|
04
|
import
android.content.Intent;
|
05
|
import
android.net.Uri;
|
06
|
import
android.os.Bundle;
|
07
|
import
android.view.View;
|
08
|
import
android.widget.Button;
|
09
|
import
android.widget.EditText;
|
11
|
public
class
MainTinyDial
extends
Activity {
|
12
|
/** Called when the activity is first created. */
|
14
|
public
void
onCreate(Bundle savedInstanceState) {
|
15
|
super
.onCreate(savedInstanceState);
|
18
|
setContentView(R.layout.main);
|
21
|
final
EditText PhoneNumberEditText = (EditText) findViewById(R.id.PhoneNumberEditText);
|
24
|
Button button = (Button) findViewById(R.id.Button01);
|
27
|
button.setOnClickListener(
new
Button.OnClickListener() {
|
32
|
public
void
onClick(View v) {
|
34
|
String phoneNumber = PhoneNumberEditText.getText().toString();
|
36
|
Intent intent =
new
Intent(Intent.ACTION_DIAL, Uri
|
37
|
.parse(
"tel://
"
+ phoneNumber));
|
39
|
startActivity(intent);
|
界面布局的main.xml代码:
1
|
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
|
程序总体设置的AndroidManifest.xml的代码:
1
|
<?xml version=
"1.0"
encoding=
"utf-8"
?>
|
分享到:
相关推荐
Intent入门指南.pdf
第八讲:Intent入门指南 Intent 第九讲:用户界面 View(四) Button TextView EditView CheckBox 第十讲:用户界面 View(五) 第十一讲:用户界面 View(六) ProgressBar SeekBar RatingBar 第十二讲:用户...
内含四个pdf文件,分别为 Intent and Intent-filter Intents and Intent Filters理论英文 Intents and Intent Filters理论中文 Intent入门指南 详尽介绍关于android intent
14.1.4 豆瓣网api快速入门 264 14.1.5 豆瓣网api java库介绍 265 14.2 豆瓣网(web 2.0)客户端设计 268 14.2.1 客户端功能规划设计 268 14.2.2 ui和交互流程设计 268 14.2.3 数据存储设计 270 14.3...
flutter_my_intent_app 一个新的Flutter应用程序。 入门 该项目是Flutter应用程序的起点。...要获得Flutter入门方面的帮助,请查看我们的,其中提供了教程,示例,有关移动开发的指南以及完整的API参考。
1. Android 简介 2. Android 开发环境的搭建 JDK 的安装(本文基于 JDK6) ...阅读 android 指南(在 android-sdk-windows\docs 目录下) 导入 android 的众多实例程序到 Eclipse 开发环境并部署、运行
同时,还需要了解Android平台的基本知识,如Activity的生命周期、Intent的用法等等。 通过完成这个作业,学生可以深入理解Android应用程序的开发过程,并提高自己的编程能力和解决问题的能力。此外,还可以锻炼学生...
标题:Android开发入门教程:从零基础到精通的详尽指南 内容概要:本文为Android开发初学者提供了一篇全面而详细的教程,涵盖了Android开发的核心概念、搭建开发环境、基本用法以及进阶技巧。通过学习本文,读者可以...
《Android开发入门指南》 2.程序系统的结构及其用到的类 2.1一个完整的Android应用程序包括: ①活动 ②意图接收器 ③服务 ④内容提供者 2.2本星座查询应用程序,主要包括了三个大类: class ...
Android Android Android Android 开发入门 System System System System Requirements Requirements Requirements Requirements The sections below describe the system and software requirements for developing...
《Android 4高级编程(第3版)》由Android权威专家编写,涵盖了所有最新的内容,是学习使用Android 4SDK开发移动应用程序的理想指南。本书见解深刻,帮助经验丰富的Android开发人员充分挖掘Android4的新特性的潜力...
flutter_intent2 一个新的Flutter应用... 如果这是您的第一个Flutter项目,那么有一些资源可以帮助您入门:要获得Flutter入门方面的帮助,请查看我们的,其中提供了教程,示例,有关移动开发的指南以及完整的API参考。