`
isiqi
  • 浏览: 16043011 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Intent入门指南

阅读更多

一、什么是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>

五、简单的拨打电话的例子

这是一个简单的拨打电话的程序,它可以截获手机上的拨号按键发出的请求,自己输入号码,并把数据传给系统的打电话程序,从而实现打电话功能。

先上效果图:

按绿色的拨号按钮的时候会呼出一个菜单让你选择使用哪个拨号程序,

image

我们选择简单拨号程序,出现输入框可以填写电话号码,并拨号image

点击拨号后,调用了系统的拨号程序。

image

最终实现了拨号:

image

再上代码,MainTinyDial.java的代码:

01 package andorid.basic.lesson8;
02
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;
10
11 public class MainTinyDial extends Activity {
12 /** Called when the activity is first created. */
13 @Override
14 public void onCreate(Bundle savedInstanceState) {
15 super .onCreate(savedInstanceState);
16
17 // 按照main.xml來渲染用戶界面
18 setContentView(R.layout.main);
19
20 // 找到存放电话号码的可编辑文本框
21 final EditText PhoneNumberEditText = (EditText) findViewById(R.id.PhoneNumberEditText);
22
23 // 找到拨号按钮
24 Button button = (Button) findViewById(R.id.Button01);
25
26 // 为拨号按钮设置一个点击事件观察者
27 button.setOnClickListener( new Button.OnClickListener() {
28 //实现监听器接口的匿名内部类,其中监听器本身是View类的内部接口
29
30 //实现接口必须实现的onClick方法
31 @Override
32 public void onClick(View v) {
33 // 获得可编辑文本框中的值,也就是电话号码
34 String phoneNumber = PhoneNumberEditText.getText().toString();
35 // new Intent(行为,数据),其中action_dial是拨号行为,数据是电话号码
36 Intent intent = new Intent(Intent.ACTION_DIAL, Uri
37 .parse( "tel:// " + phoneNumber));
38 // 去调用那些可以处理拨号行为的Activity
39 startActivity(intent);
40 }
41 });
42
43 }
44 }

界面布局的main.xml代码:

1 <? xml version = "1.0" encoding = "utf-8" ?>
2
3 < button >
4 </ button >

程序总体设置的AndroidManifest.xml的代码:

1 <?xml version= "1.0" encoding= "utf-8" ?>
分享到:
评论

相关推荐

    Intent入门指南.pdf

    Intent入门指南.pdf

    android一步一步最基础学习__新手

    第八讲:Intent入门指南 Intent 第九讲:用户界面 View(四) Button TextView EditView CheckBox 第十讲:用户界面 View(五) 第十一讲:用户界面 View(六) ProgressBar SeekBar RatingBar 第十二讲:用户...

    Intents and Intent Filters 理论中英双文

    内含四个pdf文件,分别为 Intent and Intent-filter Intents and Intent Filters理论英文 Intents and Intent Filters理论中文 Intent入门指南 详尽介绍关于android intent

    《Google Android开发入门与实战》.pdf

    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_my_intent_app 一个新的Flutter应用程序。 入门 该项目是Flutter应用程序的起点。...要获得Flutter入门方面的帮助,请查看我们的,其中提供了教程,示例,有关移动开发的指南以及完整的API参考。

    Android入门.doc

    1. Android 简介 2. Android 开发环境的搭建 JDK 的安装(本文基于 JDK6) ...阅读 android 指南(在 android-sdk-windows\docs 目录下) 导入 android 的众多实例程序到 Eclipse 开发环境并部署、运行

    基于Android指南针作业(源码+部署说明+系统文档+源码解释).zip

    同时,还需要了解Android平台的基本知识,如Activity的生命周期、Intent的用法等等。 通过完成这个作业,学生可以深入理解Android应用程序的开发过程,并提高自己的编程能力和解决问题的能力。此外,还可以锻炼学生...

    Android基础教程(非常详细)从零基础入门到精通,看完这一篇就够了.zip

    标题:Android开发入门教程:从零基础到精通的详尽指南 内容概要:本文为Android开发初学者提供了一篇全面而详细的教程,涵盖了Android开发的核心概念、搭建开发环境、基本用法以及进阶技巧。通过学习本文,读者可以...

    星座说明书

     《Android开发入门指南》 2.程序系统的结构及其用到的类 2.1一个完整的Android应用程序包括:  ①活动  ②意图接收器  ③服务  ④内容提供者 2.2本星座查询应用程序,主要包括了三个大类: class ...

    新版Android开发教程.rar

    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 4高级编程(第3版)》由Android权威专家编写,涵盖了所有最新的内容,是学习使用Android 4SDK开发移动应用程序的理想指南。本书见解深刻,帮助经验丰富的Android开发人员充分挖掘Android4的新特性的潜力...

    roulette_saitama

    flutter_intent2 一个新的Flutter应用... 如果这是您的第一个Flutter项目,那么有一些资源可以帮助您入门:要获得Flutter入门方面的帮助,请查看我们的,其中提供了教程,示例,有关移动开发的指南以及完整的API参考。

Global site tag (gtag.js) - Google Analytics