Intent总结01 Intent的结构

Intent总结01 Intent的结构


Intent对象由componentActionDataCategoryComponentExtra等属性组成组成。下面,分别对各个属性进行介绍说明。

 

1 Component 

    明确指定类名,用于跳转。通过setComponent(ComponentName)setClass(Context, Class)等设置Intentcomponent(即组成成分),来指定一个明确的类进行跳转。通过设置componentintent是显式意图,即Explicit Intents;其余的都是隐式意图,Implicit Intents

2 Action 

    规定了Intent要完成的动作,是一个字符串常量。可以通过setAction()来设置Action属性,getAction()来获得Action属性。使用Action时,我们既可以使用系统内置的Action,也可以自己定义。系统自定义的action,如ACTION_VIEW, ACTION_EDIT, ACTION_MAIN等等。

3 Data 

    设置intent的数据,该数据一般用Uri封装。

    下面,介绍几组 action/data的示例:

    ACTION_VIEW content://contacts/people/1   -- 进入联系人查看界面,并显式id1的联系人的信息。

    ACTION_EDIT  content://contacts/people/1   --进入联系人编辑界面,并编辑id1的联系人的信息。

    ACTION_DIAL  content://contacts/people/1   --进入拨号程序,并输入id1的联系人的号码。

4 Type 

    明确指定了要操作的intent数据类型。通常在data中就暗含了type类型。通过设置intenttype,我们能过滤掉type不同的intent。如mp4对应的type"video/mp4"mp3type“audio/x-mpeg”

5 Extras

    设置intent的附加数据,通常用来传递除“data”“type”之外的额外内容。例如:booleanint等基本类型数据或它们对应的数组、bundle对象、以及parcelableseriable对象。parcelableseriable对象可以参考”Android Bundle总结“。

6 Category

    附加到action上的额外信息。例如“android.intent.category.LAUNCHER”表示将该activity的图标在主界面的程序列表中显示,“android.intent.category.DEFAULT”是通过隐式intents来查找该类的必备属性。

 

总体来说:

01)若只是单纯的跳转到目标类,而不传递任何数据:可以通过设置component进行显示跳转;亦可以只设置action进行隐式跳转。

             如通过显式意图跳转,则直接在调用时通过API来进行component的设置。参考Intent总结02 component和显式意图

             如通过隐式意图跳转,则先在目标类对应的AndroidManifest.xml中注册对应的action,然后在调用时通过API设置ation进行跳转。参考"Intent总结02 component和显式意图"

02datatypeextra主要用于传递额外的参数。。

             它们之间的区别:

             data主要用来传递Uri数据,例如“http地址拨打联系人的号码“SQL语句等;关于Uri的详细说明,可以参考Intent总结04 Data和Type属性

             type主要是用来系统data的类型,如查找数据时,是查找集合,还是查找某条记录;如,不同格式的音乐对应的type也不同。参考"Intent总结04 Data和Type属性"

             extra主要用来传递booleanbyteintstring等基本类型或它们的数组,bundle对象,parcelableseriable对象。参考"Intent总结05 extra属性"

03category:附加的额外信息。例如,若要通过隐式意图查找某activity,则在该activity对应的AndroidManifest.xml中注册intent-filter时,必须加上“android.intent.category.DEFAULT”。参考"Intent总结06 category属性"


原文地址:https://www.cnblogs.com/skywang12345/p/3165554.html