Intent 显示与隐式

来源:互联网 发布:东软his 数据库表结构 编辑:程序博客网 时间:2024/05/22 15:06

Intent
显式意图:在同项目包下使用显式会比较好,效率高
隐式意图:在不同项目下跳转页面,使用隐式效率比较好。

Intent对象大致包括7大属性:
第一类:启动,有ComponentName(显式),Action(隐式),Category(隐式)。

第二类:传值,有Data(隐式),Type(隐式),Extra(隐式、显式)。

第三类:启动模式,有Flag。


1.ComponentName

Component本身有组件的意思,我们通过设置Component可以启动其他的Activity或者其他应用中的Activity。

2.ActionCategory

因为在实际开发中,Action大多时候都是和Category一起使用的,所以这里我们将这两个放在一起来讲解。Intent中的Action我们在使用广播的时候用的比较多,在Activity中,我们可以通过设置Action来隐式的启动一个Activity。

3.Data

通过设置data,我们可以执行打电话,发短信,开发网页等等操作。

4.Type

type的存在,主要是为了对data的类型做进一步的说明,但是一般情况下,只有data属性为null的时候,type属性才有效,如果data属性不为null,系统会自动根据data中的协议来分析data的数据类型,而不会去管type。

5.Extra

Extra就比较好理解了,我们经常使用它来在Activity之间传递数据,Extra可以传递基本类型,String类型以及实现了Serializable或者Parcelable接口的类。

6.Flag

通过设置Flag,我们可以设定一个Activity的启动模式,这个和launchMode基本上是一样的。


隐式要在<activity> 里面添加<intent-filter><intent-filter> 里面重要的属性<action><category><data>里面重要的属性:mimeType,scheme

Intent主要有以下四个重要属性,在<intent-filter>里面定义,它们分别为:

Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作。通过setAction()方法或在清单文件AndroidManifest.xml中设置。默认为:DEFAULT。

Data:Data通常是URI格式定义的操作数据。例如:tel:// 。通过setData()方法设置。

Category:Category属性用于指定当前动作(Action)被执行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。默认为:CATEGORY_DEFAULT。

Extras:Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。

> 四个属性各自的常用值如下所示:  **Action:**

     ACTION_MAIN:Android Application的入口,每个Android应用必须且只能包含一个此类型的Action声明。     ACTION_VIEW:系统根据不同的Data类型,通过已注册的对应Application显示数据。    ACTION_EDIT:系统根据不同的Data类型,通过已注册的对应Application编辑示数据。     ACTION_DIAL:打开系统默认的拨号程序,如果Data中设置了电话号码,则自动在拨号程序中输入此号码。     ACTION_CALL:直接呼叫Data中所带的号码。     ACTION_ANSWER:接听来电。     ACTION_SEND:由用户指定发送方式进行数据发送操作。    ACTION_SENDTO:系统根据不同的Data类型,通过已注册的对应Application进行数据发送操作。     ACTION_BOOT_COMPLETED:Android系统在启动完毕后发出带有此Action的广播(Broadcast)。     ACTION_TIME_CHANGED:Android系统的时间发生改变后发出带有此Action的广播(Broadcast)。     ACTION_PACKAGE_ADDED:Android系统安装了新的Application之后发出带有此Action的广播(Broadcast)。     ACTION_PACKAGE_CHANGED:Android系统中已存在的Application发生改变之后(如应用更新操作)发出带有此Action的广播(Broadcast)。     ACTION_PACKAGE_REMOVED:卸载了Android系统已存在的Application之后发出带有此Action的广播(Broadcast)。

  Category:

     CATEGORY_DEFAULT:Android系统中默认的执行方式,按照普通Activity的执行方式执行。     CATEGORY_HOME:设置该组件为Home Activity。    CATEGORY_PREFERENCE:设置该组件为Preference。     CATEGORY_LAUNCHER:设置该组件为在当前应用程序启动器中优先级最高的Activity,通常为入口ACTION_MAIN配合使用。     CATEGORY_BROWSABLE:设置该组件可以使用浏览器启动。     CATEGORY_GADGET:设置该组件可以内嵌到另外的Activity中。

  Extras:

     EXTRA_BCC:存放邮件密送人地址的字符串数组。     EXTRA_CC:存放邮件抄送人地址的字符串数组。    EXTRA_EMAIL:存放邮件地址的字符串数组。     EXTRA_SUBJECT:存放邮件主题字符串。     EXTRA_TEXT:存放邮件内容。     EXTRA_KEY_EVENT:以KeyEvent对象方式存放触发Intent的按键。      EXTRA_PHONE_NUMBER:存放调用ACTION_CALL时的电话号码。

  Data:

    tel://:号码数据格式,后跟电话号码。     mailto://:邮件数据格式,后跟邮件收件人地址。    smsto://:短息数据格式,后跟短信接收号码。    content://:内容数据格式,后跟需要读取的内容。     file://:文件数据格式,后跟文件路径。    market://search?q=pname:pkgname:市场数据格式,在Google Market里搜索包名为pkgname的应用。       geo://latitude,longitude:经纬数据格式,在地图上显示经纬度指定的位置。在intent-filter中指定data属性的实际目的是:要求接收的Intent中的data必须符合intent-filter中指定的data属性,这样达到反向限定Intent的作用。

Intent获取结果,传递

startActivityForResult(Intent intent, int requestCode)//参数2 设置请求码setResult(int resultCode, Intent data)//参数1 对应传递过来请求码重写onActivityResult(int requestCode, int resultCode, Intent data) //返回Result结果,参数2可以用来区分代码类别
2 0