一、什么是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是Android开发中的核心概念之一,它是组件间通信的重要桥梁,用于传递消息和启动其他组件。在Android应用中,Intent不仅用于启动Activity,还可以启动Service、BroadcastReceiver以及启动IntentResolver。下面...
内含四个pdf文件,分别为 Intent and Intent-filter Intents and Intent Filters理论英文 Intents and Intent Filters理论中文 Intent入门指南 详尽介绍关于android intent
#### 第八讲:Intent入门指南 - **Intent概念**: - 用于传递消息,实现Activity之间的跳转或服务的调用。 - 包含动作(Action)、数据(Data)、类别(Category)等信息。 - **使用Intent**: - 显式Intent:...
《谷歌Android开发入门指南(第三版)》源代码是一份宝贵的学习资源,旨在帮助初学者深入理解Android应用程序的开发过程。这份源代码包含了书中各个章节的实例,涵盖了Android开发的基础到进阶内容,让读者可以通过...
《Android开发入门指南》(第二版)是一本非常实用的教材,它为新手提供了深入浅出的指导。本书包含的三个范例代码旨在帮助读者更好地理解Android应用开发的核心概念和实践技巧。 第一个范例可能是"HelloAndroid",这...
《Google Android开发入门指南(第2版)》是一本针对初学者精心编写的教程,旨在帮助读者快速掌握Android应用开发的基础知识。随书附带的光盘包含了丰富的实例源码,为理论学习提供了实践操作的支持,是深入理解...
《Google Android开发入门指南》是一本为初学者精心编写的教程,旨在帮助读者快速掌握Android应用开发的基础知识。源码是学习编程过程中极其重要的部分,它能让我们直观地看到理论如何转化为实际代码。通过分析和...
在Android开发领域,初学者经常会遇到许多挑战,而"android开发入门指南(第二版--17章示例代码)"正是为了帮助这些人提供一个实践学习的平台。本资源包含Google Android开发入门指南第二版第17章的BMI(Body Mass ...
**Android Studio入门指南** 在移动应用开发领域,Android Studio作为Google官方推荐的集成开发环境(IDE),已经成为Android应用开发的标准工具。《Android Studio入门指南v0.1》虽然版本较旧,但其基础内容仍然对...
根据给定的文件信息,以下是从“Android编程指南+程序员入门(中文版).pdf”中提炼的关键知识点: ### 一、编程环境搭建 #### 1. Android SDK与Eclipse集成 - **下载与安装Android SDK**:从官方网址...
《Google Android开发入门指南》是一本专为初学者设计的Android应用开发教程,它涵盖了从基础知识到实际项目开发的全过程。这本书的特点在于提供了中英文双语版本,方便不同语言背景的读者学习。以下是对该书内容的...
### Google Android 开发入门指南(第三版)知识点总结 #### 一、书籍概述与目标读者 - **书籍名称**:Google Android 开发入门指南(第三版) - **目标读者**:本书面向Android初学者,旨在帮助他们从零基础快速...
《谷歌Android开发入门指南(第二版)》源代码是一份宝贵的学习资源,旨在帮助初学者和有经验的开发者深入理解Android应用开发。这份源代码涵盖了从基础到进阶的多种技术,包括Android SDK的使用、Android Studio的...
《Google Android开发入门与实战》是一本针对Android平台应用开发的全面指南,旨在帮助有一定软件开发经验的程序员快速进入Android开发领域。本书通过详细讲解Android的基础知识、环境搭建、SDK介绍、Market使用以及...
同时,也会介绍Android的生命周期管理和后台处理,如Intent、Fragment以及后台任务的执行策略。 最后,为了帮助读者更好地调试和优化代码,书中会讲述Android Studio的调试工具、性能分析技巧,以及如何进行单元...
此外,还会介绍Activity和Intent的概念,Activity作为用户界面的载体,Intent则用于在不同的组件之间传递消息和启动服务。 书中的核心章节将围绕布局设计展开,如XML布局文件的编写,以及如何使用各种视图元素...
- `Intent`类用于启动其他活动或服务。 - `SQLite`库支持本地数据库操作。 - `XML`和`JSON`库方便数据交换。 - `HttpClient`和`WebSocket`类实现网络通信。 六、调试与发布 B4A内置了调试工具,你可以通过设置断点...
除此之外,readme.txt可能是对章节内容的简要说明或指南,而www.heyjava.com.url可能是一个与课程相关的网站链接,提供额外的学习资源或示例代码。 总之,掌握Intent和Activity是Android开发的基础,也是提升应用...
【Android开发指南中文版】是一份详尽的资源,涵盖了从基础到高级的Android应用开发知识,适合初学者和有经验的开发者。这份指南深入解释了Android应用程序框架,它是Android系统的核心组成部分,允许开发者构建功能...
在本指南中,“犯罪意图”可能是指通过Intent来模拟犯罪行为的案例,以帮助开发者理解和实践Intent的使用。 四、布局设计 Android应用的用户界面主要通过XML布局文件定义。使用Android Studio的布局编辑器,你可以...