【移动应用开发技术】android之Intent的七大属性_第1页
【移动应用开发技术】android之Intent的七大属性_第2页
【移动应用开发技术】android之Intent的七大属性_第3页
【移动应用开发技术】android之Intent的七大属性_第4页
【移动应用开发技术】android之Intent的七大属性_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】android之Intent的七大属性

Intent用于封装程序的“调用意图”。两个Activity之间,可以把需要交换的数据,封装成Bundle对象,然后使用Intent对象,携带数据到另一个Activity中。实现两个Activity的数据交换。

Intent还是各种应用程序组件之间通信的重要媒介。启动Activity、Service、BroadcastReceiver,都需要使用Intent。

Intent还有一个好处,如果应用程序只是想启动具有某种特征的组件,并不想和某个具体的组件耦合,则可以通过在intent-filter中配置相应的属性进行处理,与stucts2中的MVC框架思路类似

Intent对象大致包括7大属性:1、ComponentName,2、Action,3、Catory,4、data,5、Type,6、Extra,7、Flag。

·Action作为标识符,代表一个Intent,当一个Activity需要外部协助处理时,就会发出一个Intent,如果一个程序能完成相应功能,只要在intent-filter加上这个这个intent就可以了。

·Data保存需要传递的数据格式,比如:tel://

·Extras保存需要传递的额外数据。

·Category表示Intent的种类,从android上启动Activity有多种方式,比如程序列表、桌面图标、点击Home激活的桌面等等,Category则用来标识这些Activity的图标会出现在哪些启动的上下文环境里。(一)

ComponentName:明确指定Intent将要启动哪个组件,因此这种Intent被称为显示Intent,没有指定ComponentName属性的Intent被称为隐式Intent。隐式Intent没有明确要启动哪个组件,应用汇根据Intent指定的规则去启动符合条件的组件。ComponentName不仅可以启动本程序中的activity,还可以启动其它程序的activity。启动方式:Intentintent=newIntent();ComponentNamecomponent=newComponentName(this,TwoActivity.class);intent.setComponent(component);等价于:Intentintent=newIntent(this,TwoActivity.class);startActivity(intent);等价于:Intentintent=newIntent();intent.setClass(this,TwoActivity.class);startActivity(intent);等价于:Intentintent=newIntent();intent.setClassName(this,"com.zzh.day06_intent.TwoActivity");startActivity(intent);本程序中启动其它程序:

(二)

Action、Category属性与intent-filter配置:通常,Action,Category属性结合使用。定义这两个属性都是在主配置文件的<intent-filter>节点中。Intent通过定义Action属性(其实就是定义一段自定义的字符串),这样就可以把Intent与具体的某个Activity分离,实现了解耦。否则,每次跳转都有写成,(三)

data:1、

用于添加数据。通常是启动某个系统程序或其他程序,带给此程序的信息。Data属性通常用于向Action属性提供操作的数据。Data属性的值是个Uri对象。Uri的格式如下:scheme://host:port/path2、

系统内置的属性常量tel:是固定写法,是系统内置的属性常量。系统内置的几个Data属性常量:·tel://:号码数据格式,后跟电话号码。·mailto://:邮件数据格式,后跟邮件收件人地址。·smsto://:短息数据格式,后跟短信接收号码。·content://:内容数据格式,后跟需要读取的内容。·file://:文件数据格式,后跟文件路径。·market://search?q=pname:pkgname:市场数据格式,在GoogleMarket里搜索包名为pkgname的应用。·geo://latitude,longitude:经纬数据格式,在地图上显示经纬度所指定的位置。四、Intent利用Action属性和Data属性启动Android系统内置组件的代码(一)、拨打电话:Intentintent=newIntent();intent.setAction(Intent.ACTION_CALL);//intent.setAction("ent.action.CALL");

//以下各项皆如此,都有两种写法。intent.setData(Uri.parse("tel:1320010001"));startActivity(intent);//调用拨号面板:Intentintent=newIntent();intent.setAction(Intent.ACTION_DIAL);intent.setData(Uri.parse("tel:1320010001"));startActivity(intent);//调用拨号面板:Intentintent=newIntent();intent.setAction(Intent.ACTION_VIEW);intent.setData(Uri.parse("tel:1320010001"));startActivity(intent);(二)、利用Uri打开浏览器、打开地图等:Uriuri=Uri.parse("");//浏览器Uriuri=Uri.parse("geo:39.899533,116.036476");//打开地图定位Intentintent=newIntent();intent.setAction(Intent.ACTION_VIEW);intent.setData(uri);(五)Type属性1、Type属性用于指定Data所指定的Uri对应的MIME类型。MIME只要符合“abc/xyz”这样的字符串格式即可。2、Intent利用Action、Data和Type属性启动Android系统内置组件的代码:播放视频:Intentintent=newIntent();Uriuri=Uri.parse("file:///sdcard/media.mp4");intent.setAction(Intent.ACTION_VIEW);intent.setDataAndType(uri,"video/*");(六)Extra属性1、通过intent.putExtra(键,值)的形式在多个Activity之间进行数据交换。2、系统内置的几个Extra常量EXTRA_BCC:存放邮件密送人地址的字符串数组。EXTRA_CC:存放邮件抄送人地址的字符串数组。EXTRA_EMAIL:存放邮件地址的字符串数组。EXTRA_SUBJECT:存放邮件主题字符串。EXTRA_TEXT:存放邮件内容。EXTRA_KEY_EVENT:以KeyEvent对象方式存放触发Intent的按键。EXTRA_PHONE_NUMBER:存放调用ACTION_CALL时的电话号码。3、Intent利用Action、Data和Type、Extra属性启动Android系统内置组件的代码:调用发送短信的程序Intentintent=newIntent();intent.setAction(Intent.ACTION_VIEW);intent.setType("vnd.android-dir/mms-sms");intent.putExtra("sms_body","信息内容...");startActivity(intent);//发送短信息Uriuri=Uri.parse("smsto);Intentintent=newIntent();intent.setAction(Intent.ACTION_SENDTO);intent.setData(uri);intent.putExtra("sms_body","信息内容...");startActivity(intent);//发送彩信,设备会提示选择合适的程序发送Uriuri=Uri.parse("content://media/external/p_w_picpaths/media/23");//设备中的资源(图像或其他资源)Intentintent=newIntent();intent.setAction(Intent.ACTION_SEND);intent.setType("p_w_picpath/png");intent.putExtra("sms_body","内容");intent.putExtra(Intent.EXTRA_STREAM,uri);startActivity(it);发送Email:Intentintent=newIntent();intent.setAction(Intent.ACTION_SEND);String[]tos={"android1@163.com"}String[]ccs={"you@"};intent.putExtra(Intent.EXTRA_EMAIL,tos);intent.putExtra(Intent.EXTRA_CC,ccs);intent.putExtra(Intent.EXTRA_TEXT,"Theemailbodytext");intent.putExtra(Intent.EXTRA_SUBJECT,"Theemailsubjecttext");intent.setType("message/rfc822");startActivity(Intent.createChooser(intent,"ChooseEmailClient"));Intentintent=newIntent(Intent.ACTION_SEND);String[]tos={"mobileservice@"};intent.putExtra(Intent.EXTRA_EMAIL,tos);intent.putExtra(Intent.EXTRA_TEXT,getPhoneParameter());intent.putExtra(Intent.EXTRA_SUBJECT,"Android日志");intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(cacheDir));intent.setType("message/rfc882");intent.setType("plain/text");Intent.createChooser(intent,"请选择邮件发送软件");startActivity(intent);intent.setAction(vider.Settings.ACTION_SETTINGS)4、Intent利用Action属性中的ACTION_GET_CONTENT获取返回值//选择图片requestCode返回的标识Intentintent=newIntent();intent.setAction(Intent.ACTION_GET_CONTENT);intent.setType("p_w_picpath/*");IntentwrapperIntent=Intent.createChooser(intent,null);startActivityForResult(wrapperIntent,requestCode);//添加音频Intentintent=newIntent();intent.setAction(Intent.ACTION_GET_CONTENT);intent.setType("video/*");IntentwrapperIntent=Intent.createChooser(intent,null);startActivityForResult(wrapperIntent,requestCode);//视频Intentintent=newIntent();intent.setAction(Intent.ACTION_GET_CONTENT);intent.setType("video/*");IntentwrapperIntent=Intent.createChooser(intent,null);startActivityForResult(wrapperIntent,requestCode);//录音Intentintent=newIntent();intent.setAction(Intent.ACTION_GET_CONTENT);intent.setType("audio/amr");intent.setClassName("com.android.soundrecorder","com.android.soundrecorder.SoundRecorder");startActivityForResult(intent,requestCode);(七)、Flags属性:Intent可调用addFlags()方法来为Intent添加控制标记。【重要】1、FLAG_ACTIVITY_CLEAR_TOP:(效果同ActivityLaunchMode的singleTask)如果在栈中已经有该Activity的实例,就重用该实例。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。2、FLAG_ACTIVITY_SINGLE_TOP:(效果同ActivityLaunchMode的singleTop)如果在任务的栈顶正好存在该Activity的实例,就重用该实例,而不会创建新的Activity对象。3、FLAG_ACTIVITY_NEW_TASK:【备注:】以下几个为了解。4、FLAG_ACTIVITY_MULTIPLE_TASK:5、FLAG_ACTIVITY_BROUGHT_TO_FRONT:6、FLAG_ACTIVITY_RESET_TASK_IF_NEEDED:示例代码:Intentintent=new

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论