首页 理论教育 Intent属性详解:了解Intent的七个属性

Intent属性详解:了解Intent的七个属性

时间:2023-06-17 理论教育 版权反馈
【摘要】:另外说下Intent中的两个参数,前者是Context,上下文,其实就是包名,后面的是要启动的Activity,由此就确定了包名+类名=全限定类名,从而确定启动的是哪个 Activity。同样在Java与Intetn-filter中的格式也是不一样的。

Intent属性详解:了解Intent的七个属性

1.ComponentName(组件名称)

ComponentName(组件名称)即目标组件的名称,由组件所在应用程序配置文件中设置的包名+组件的全限定类名组成,这是显式的Intent,激发的组件只有一个。有setClass(),setClassName()或setComponent()方法设置使用getComponent()方法获取

ComponentName cn= new ComponentName (OneActivity.this, TwoActivity.class);

Intent it= new Intent ();

it setComponent(on);

注:其实上面的代码直接写成:Intent it= new Intent (OneActivity, this, TwoActivity,class); 就可以了,所以上面的写法没什么必要,理解下就可以了。另外说下Intent中的两个参数,前者是Context,上下文,其实就是包名,后面的是要启动的Activity,由此就确定了包名+类名=全限定类名,从而确定启动的是哪个 Activity。另外可以在第二个Activity调用getIntenty{}.getComponen()方法获得该对象,然后调用getPackageName()获得包名,getClassName()获得类名。

2.Action(动作)

Action(动作)是一个普通的字符串,代表Intent要完成的一个抽象“动作”,比如发信息的权限,而具体由哪个组件来完成,Intent并不负责,就是仅仅知道会有这个动作,谁来完成就交给Intent-filterf进行筛选了。

要注意的是,在Java中的Action与Intent-filter中的格式是不一样的,比如:

(1)<action android:name="android.intent.action.CALL"/>

(2)intent.setAction (Intent.CALL_ACTION);

3.Category(类别)

Category(类别)同样是普通的字符串,Category则用于为Action提供额外的附加类别信息,两者通常结合使用,一个Intent对象只能有一个Action,但是能有多个Category。

同样在Java与Intetn-filter中的格式也是不一样的。

(1)<category android:name="android.intent.category.DEFAULT"/>

(2)intent.addCategorie (Intent.CATEGORY_DEFAULT);

可调用removeCategory()删除上次添加的种类,也可以用getCategories()方法获得当前对象所包含的全部种类。

注意:Action是动作,Category是类别,为Action提供其他附加的信息,其实用得较多的是在intent-filter中使用,从而实现隐式的Intent,系统提供的相关的Action与Category可以自己查表,在sdk的docs文档目录中的:reference→android→content→Intent.html。(www.xing528.com)

4.Data(数据)及Type(MIME类型)

Data通常用于向Action属性提供操作的数据,接受一个URI对象,URI的格式:scheme://host:port/path。参数依次为:协议头、主机、端口、路径。Type通常用于指定Data所制定的URI对应的MME类型,比如能够显示图片数据的组建不应该用来播放音频文件,可以是自定义的MIME类型,只要符合abc/xyz格式的字符串即可。

如果用户在Java代码中进行设置,那么这两个属性是会相互覆盖的,如果需要两个属性都有的话,则需调用setDataAndType()方法进行设置。而在AndroidManifest.xml文件中,这两个属性都是存放在data标签中的:

<data

android: mineType="Intent的Type属性"

android: scheme="Data的scheme协议头"

android: host="Data的主机号"

android: port="Data的端口号"

android: path="Data的路径"

android: pathPrefix="Data的path前段"

android: pathPattern="Data属性的path的字符串模板"/>

5.Extras(额外)

Extras(额外)通常用于多个Action之间的数据交换,Extras属性是一个Bundle对象,通过键值对进行数据的存储。

单个变量:intent.putIntExtra(), getputExtra()

Bundle: intent.putExtras(), getExtras()

6.Flags(标记)

Flags(标记)表示不同来源的标记,多数用于只是Android如何启动Activity以及启动后如何对待,标记都定义在Inetnt类中,比如FLAG_ACTIVITY) SINGLE_TOP:,相当于加载模式中的single Top模式,所有标记都是整数类型,前面Activity已经予以介绍。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈