版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Android开发实战经典第9章:Android组件通信 Intent深入北京魔乐科技软件学院李兴华研发部本章目标掌握内置Intent的调用操作。E-MAIL:Intent数据传递 Intent传递数据的时实际上一共分为以下六种数据:操作(Action)、数据(Data)、数据类型(Type)、操作类别(Category)、附加信息( Extras)、组件(Component)、标志(Flags)E-MAIL:操作(Action)设置该Intent会触发的操作类型,可以通过setAction()方法进行设置,在Android 系统之中已经为用
2、户准备好了一些表示Action操作的常量,例如:ACTION_CALL、ACTION_MAIN等E-MAIL:No.Action名称AndroidManifest.xml配置名称描述1ACTION_MAINent.action.MAIN作为一个程序的入口,不需要接收数据2ACTION_VIEWent.action.VIEW用于数据的显示3ACTION_DIALent.action.DIAL调用电话拨号程序4ACTION_EDITent.action.EDIT用于编辑给定的数据5AC
3、TION_PICKent.action.PICK从特定的一组数据之中进行数据的选择操作6ACTION_RUNent.action.RUN运行数据7ACTION_SENDent.action.SEND调用发送短信程序8ACTION_GET_CONTENTent.action.GET_CONTENT根据指定的Type来选择打开操作内容的Intent9ACTION_CHOOSERent.action.CHOOSER创建文件操作选择器数据(Data)描述Intent所操作数据的URI及类型,可
4、以通过setData()进行设置,不同的操作对应着不同的DataE-MAIL:No.操作类型Data(Uri)格式范例1浏览网页http:/网页地址2拨打电话tel:电话号码tel:010512833463发送短信smsto:短收人号码smsto: 136213844554查找SD卡文件file:/sdcard/文件或目录file:/sdcard/mypic.jpg5显示地图geo:坐标,坐标geo:31.899533,-27.036173数据类型(Type)指定要传送数据的MIME类型,可以直接通过setType()方法进行设置E-
5、MAIL:No.作用MIME类型1发送短信vnd.android-dir/mms-sms2设置图片image/png3普通文本text/plain4设置音乐audio/mp3操作类别(Category)对执行操作的类别进行描述,可以通过addCategory()方法设置多个类别E-MAIL:No.Category名称AndroidManifest.xml配置名称描述1CATEGORY_LAUNCHERent.category.LAUNCHER表示此程序显示在应用程序列表中2CATEGORY_HOME
6、ent.category.HOME显示主桌面,即开机时的第一个界面3CATEGORY_PREFERENCEent.category.PREFERENCE运行后将出现一个选择面板4CATEGORY_BROWSABLEent.category.BROWSABLE显示一张图片、email信息5CATEGORY_DEFAULTent.category.DEFAULT设置一个操作的默认执行6CATEGORY_OPENABLEent.category.OPENABLE当Action设置为“GET_CONTENT”时用于
7、打开指定的Uri附加信息(Extras)传递的是一组键值对,可以使用pubExtra()方法进行设置,主要的功能是传递数据(Uri)所需要的一些额外的操作信息E-MAIL:No.操作数据附加信息作用1短信操作sms_body表示要发送短信的内容2彩信操作Intent.EXTRA_STREAM设置发送彩信的内容3指定接收人Intent.EXTRA_BCC指定接收email或信息的接收人4Email收件人Intent.EXTRA_EMAIL用于指定Email的接收者,接收一个数组5Email标题Intent.EXTRA_SUBJECT用于指定Email邮件的标题6Emai
8、l内容Intent.EXTRA_TEXT用于设置邮件内容组件(Component)指明了将要处理的Activity程序,所有的组件信息都被封装在一个ComponentName对象之中,这些组件都必须在AndroidManifest.xml文件中的“”中注册;E-MAIL:标志(Flags)用于指示Android系统如何加载并运行一个操作,可以通过addFlags()方法进行增加。E-MAIL:范例:打开网页E-MAIL:范例:定义字符串资源文件 strings.xmlE-MAIL:Inten
9、t应用标准Action操作范例:定义布局管理器资源 main.xmlE-MAIL:布局管理器高度为屏幕高度默认显示文字范例:定义Activity程序,操作IntentE-MAIL:public class MyIntentCaseDemo extends Activity private Button mybut = null ;/ 按钮组件Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); super.setC
10、ontentView(R.layout.main);/ 默认布局管理器this.mybut = (Button) super.findViewById(R.id.mybut) ;/ 取得组件this.mybut.setOnClickListener(new OnClickListenerImpl();/ 定义单击private class OnClickListenerImpl implements OnClickListener Overridepublic void onClick(View view) Uri uri = Uri.parse() ;/ 指
11、定数据Intent it = new Intent() ;/ 实 例 化 Intent it.setAction(Intent.ACTION_VIEW);/ 指 定 Action it.setData(uri) ;/ 设置数据MyIntentCaseDemo.this.startActivity(it); / 启动Activity范例:调用拨号程序E-MAIL:范例:定义布局文件 main.xmlE-MAIL:布局管理器高度为屏幕高度组件高度为文字高度默认显示文字范例:定义Activity程序,调用拨号操作E-MAIL:mldnqa163.c
12、ompublic class MyIntentCaseDemo extends Activity private Button mybut = null ;/ 按钮组件private EditText tel = null ;/ 文本输入Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); super.setContentView(R.layout.main);/ 默认布局管理器this.mybut = (Button) super.findViewById(R.i
13、d.mybut) ; / 取 得 组 件this.tel = (EditText) super.findViewById(R.id.tel) ; / 取 得 组 件this.mybut.setOnClickListener(new OnClickListenerImpl();/ 定义单击private class OnClickListenerImpl implements OnClickListener Overridepublic void onClick(View view) String telStr = MyIntentCaseDemo.this.tel.getText().toSt
14、ring() ; Uri uri = Uri.parse(tel: + telStr) ;/ 指定数据Intent it = new Intent() ;/ 实 例 化 Intent it.setAction(Intent.ACTION_DIAL);/ 指 定 Action it.setData(uri) ;/ 设置数据MyIntentCaseDemo.this.startActivity(it);/ 启动Activity范例:在AndroidManifest.xml增加配置E-MAIL:范例:发送短信E-MAIL:短信发送操作步骤指定要接收
15、短信的手机号码,如果不指定,则在短号码,用户要自己填写:Uri uri = Uri.parse(smsto;收人处将不会显示可以直接通过附加信息设置短信的内容,而此时附加信息的名称为系统定义好的“sms_body”:it.putExtra(sms_body, 北京魔乐科技软件学院);如果要发送短信,则应该设置MIME类型,以下的类型为普通短信的MIME类型设置:it.setType(vnd.android-dir/mms-sms);E-MAIL:范例:定义布局管理器 main.xml(A)E-MAIL:布局管理器高度
16、为屏幕高度布局管理器高度为内部组件高度定义表格行组件文字大小为20像素组件高度为文字高度表格行完结范例:定义布局管理器 main.xml(B)E-MAIL:设置背景颜色定义表格行组件高度为文字高度组件高度为自身高度表格行完结默认显示文字内嵌表格布局管理器完结默认显示文字范例:定义Activity程序,调用ActionE-MAIL:public class MyIntentCaseDemo extends Activity private Button mybut = null ;/ 按钮组件private EditText tel = nul
17、l ;/ 文本输入private EditText content = null ;/ 文本输入Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main);/ 默认布局管理器this.mybut = (Button) super.findViewById(R.id.mybut) ;/ 取得组件this.tel = (EditText) super.findViewById(R.id.tel) ; / 取
18、得组件this.content = (EditText) super.findViewById(R.id.content) ;/ 取得组件this.mybut.setOnClickListener(new OnClickListenerImpl();/ 定义单击private class OnClickListenerImpl implements OnClickListener Overridepublic void onClick(View view) String telStr = MyIntentCaseDemo.this.tel.getText().toString() ;/ 接收人
19、电话String note = MyIntentCaseDemo.this.content.getText().toString();/ 短信内容Uri uri = Uri.parse(smsto: + telStr) ;/ 接收人手机Intent it = new Intent() ;/ 实例化Intentit.setAction(Intent.ACTION_SENDTO);/ 指定Actionit.putExtra(sms_body, note);/ 设置信息内容it.setType(vnd.android-dir/mms-sms);/ 设置MIME类型it.setData(uri) ;/
20、 设置数据MyIntentCaseDemo.this.startActivity(it);/ 启动Activity范例:调用发送带图片的彩信程序E-MAIL:发送彩信的步骤调用发送短信的Action:it.setAction(Intent.ACTION_SEND);指定要发送的图片,直接从sdcard上指定:Uri uri = Uri.parse(file:/sdcard/mypic.jpg);设置要发送的信息内容:it.putExtra(sms_body, 北京魔乐科技软件学院);指定要发送的彩信中的图片:it.putExtra(Intent.EXTRA_STREA
21、M, uri);信息接收者的电话号码:it.putExtra(Intent.EXTRA_BCC,;指定发送信息的MIME类型:it.setType(image/png);E-MAIL:范例:定义布局管理器 open_main.xmlE-MAIL:布局管理器高度为屏幕高度默认显示信息范例:定义Activity程序,调用发送彩信的ActionE-MAIL:package org.lxh.demo;import android.app.Activity; import android.conten
22、t.Intent; import .Uri; import android.os.Bundle; import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MyIntentCaseDemo extends Activity private Button mybut = null ;/ 按钮组件Overridepublic void onCreate(Bundle savedInstanceState) super.o
23、nCreate(savedInstanceState);super.setContentView(R.layout.main);/ 默认布局管理器this.mybut = (Button) super.findViewById(R.id.mybut) ;/ 取得组件this.mybut.setOnClickListener(new OnClickListenerImpl();/ 定义单击private class OnClickListenerImpl implements OnClickListener Overridepublic void onClick(View view) Uri u
24、ri = Uri.parse(file:/sdcard/mypic.jpg);/ sdcard的图片Intent it = new Intent() ;/ 实例化Intentit.setAction(Intent.ACTION_SEND);/ 指定Actionit.putExtra(address,;/ 接收人it.putExtra(sms_body, 北京魔乐科技软件学院);/ 设置信息内容it.putExtra(Intent.EXTRA_STREAM, uri);/ 设置图片it.setType(image/png);/ 设置MIME类型MyIntentCaseD
25、emo.this.startActivity(it);/ 启动Activity范例:发送Email 真机模拟E-MAIL:Intent附加内容Intent.EXTRA_EMAIL:收件人地址;Intent.EXTRA_SUBJECT:邮件标题;Intent.EXTRA_TEXT:邮件内容;E-MAIL:范例:定义布局管理器显示按钮E-MAIL:布局管理器高度为屏幕高度默认显示信息范例:定义Activity程序,发送普通文本邮件E-MAIL:public class MyIntentCaseD
26、emo extends Activity private Button mybut = null ;/ 按钮组件Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main);/ 默认布局管理器this.mybut = (Button) super.findViewById(R.id.mybut) ;/ 取得组件this.mybut.setOnClickListener(new OnClickListene
27、rImpl();/ 定义单击private class OnClickListenerImpl implements OnClickListener Overridepublic void onClick(View view) Intent emailIntent = new Intent(Intent.ACTION_SEND) ;/ 实 例 化 Intent emailIntent.setType(plain/text) ;/ 设置类型String address = new S ;/ 收件人的地址String subject = 北京魔乐科技软件学院(M
28、LDN) ;/ 邮件主题String content = ;/ 邮件内容emailIntent.putExtra(Intent.EXTRA_EMAIL, address) ;/ 设置首件人emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject) ;/ 设置主题emailIntent.putExtra(Intent.EXTRA_TEXT, content) ;/ 设置内容MyIntentCaseDemo.this.startActivity(emailIntent);/ 执行Intent范例:调用ContentProv
29、iderE-MAIL:操作步骤:URI的地址定义为:content:/contacts/people;直接利用Activity类中的managedQuery()方法(或者使用super.getContentResolver().query()方法查询)取得指定用户ID的全部手机数据;E-MAIL:范例:使用Intent完成ContentProvider的调用E-MAIL:public class MyIntentContentDemo extends Activity private static final int
30、 PICK_CONTACT_SUBACTIVITY = 1;/ 定义操作标记Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); super.setContentView(R.layout.main);Uri uri = Uri.parse(content:/contacts/people);/ 连接URIIntent intent = new Intent(Intent.ACTION_PICK, uri);/ 指定Intentsuper.startActivity
31、ForResult(intent, PICK_CONTACT_SUBACTIVITY);/ 调用IntentOverrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) switch (requestCode) case PICK_CONTACT_SUBACTIVITY:/ 接收返回的数据Uri ret = data.getData();/ 单个数据UriString phoneSelection = ContactsContract.CommonDataKinds.Phone.CON
32、TACT_ID+ =?; / 设置查询条件String phoneSelectionArgs = String.valueOf(ContentUris.parseId(ret) ;/ 查询参数Cursor c = super.managedQuery(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, phoneSelection, phoneSelectionArgs, null);/ 查询全部手机号码StringBuffer buf = new StringBuffer() ;/ 用于接收全部电话buf.append(电话号码
33、是:) ;for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext() / 循环取数据buf.append(c.getString(c.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER).append(、);/ 取出电话号码Toast.makeText(this, buf, Toast.LENGTH_LONG).show();/ 显示信息范例:配置访问联系人的权限E-MAIL:范例:创建操作Intent的选择器E-MAIL:mldnqa163.co
34、m操作步骤如果用户现在希望自己开发的程序也可以加入到这个选择器之中,则就需要使用createChooser()方法完成,使用createChooser()方一个Intent,其Action的名称为“ACTION_CHOOSER”public static Intent createChooser(Intent target, CharSequence title)自动创建E-MAIL:范例:定义布局管理器 main.xmlE-MAIL:布局管理器高度为屏幕高度 默认显示图片范例:定义Activity程序显示文件选择器E-MAIL:mldnqa
35、163.compackage org.lxh.demo;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageButton;public class MyIntentCaseDemo extends Activity private ImageButton mybut = null;/ 按钮组件Overridepublic void onCreate(Bundle sav
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- am调制器课程设计
- 右侧蛛膜下腔出血护理
- 哮喘治疗要点
- DB32T 2281-2012 农用辐照装置剂量检测规范
- DB32T 1978-2012 地方鹅品种资源保护技术规范
- 大公国际资信评估有限公司组织架构图及说明
- python图形钟表的课程设计
- 企业发展历程范文-共10篇
- 人教版初中数学总复习第二章方程(组)与不等式(组)第5课时一次方程(组)练习含答案
- 胃瘫疑难杂症护理
- 辽宁省沈阳市沈阳市郊联体2024-2025学年高二上学期11月期中英语试题 含解析
- 《员工培训方案》课件
- 2024年贵州省贵阳修文县事业单位招聘133人历年管理单位遴选500模拟题附带答案详解
- 读书分享《非暴力沟通》课件(图文)
- 2024-2030年中国家禽饲养行业发展前景预测和投融资分析报告
- 2024-2030年中国净菜加工行业市场营销模式及投资规模分析报告
- 2024-2025学年广东省佛山市九年级(上)期中数学试卷(含答案)
- 湖南省长沙市雅礼教育集团2024-2025学年高一上学期期中考试数学试题 含解析
- 第二章 空气、物质的构成(选拔卷)(原卷版)
- 云南省昆明市昆十中教育集团2024-2025学年七年级上学期期中测试地理试卷(无答案)
- 2024-2025学年度广东省春季高考英语模拟试卷(解析版) - 副本
评论
0/150
提交评论