Intent的Data和Type属性
Intent的Data属性通常用于向Action属性提供操作的数据,Data属性接收一个Uri对象。Uri字符串满足如下格式:
例如:
部分被省略,contacts/1是path部分。
Type属性则用于明确指定Data属性的数据类型或MIME类型,但是通常来说,当Intent不指定Data属性时Type属性才会起作用,否则Android系统将会根据Data 属性值来分析数据的类型,所以无需指定Type属性。
一旦为Intent同时指定了Action和Data属性,那么Android将可根据指定的数据类型来启动特定的应用程序,并对指定的数据执行相应的操作。下面是几个Action 属性、Data属性的组合:
ACTION_VIEW content://acts/contacts/1:显示标识为1的联系人的信息。
字符串函数strip的作用
ACTION_EDIT content://acts/contacts/1:编辑标识为1的联系人的信息。
ACTION_DIAL content://acts/contacts/1:显示向标识为1的联系人拨号的界面
ACTION_DIAL tel:123 显示向指定号码123拨号的界面。
ACTION_VIEW content://contacts/people:显示所有联系人列表的信息。
Data和Type的值会相互覆盖,即如果先设置Data的值,后设置Type的值,Data的值会被Type的值覆盖,反过来也是这样,想既有Data的值也有Type的值,那么就要调用Intent的setDataAndType()方法。
在l文件中为组件声明Data,Type属性都通过<data../>元素进行设置,格式如下:
该组件。
Data属性的Uri对象实际可分为scheme,host,port和path部分,此时并不要求这四个部分的值必须和<data../>子元素的android:scheme,android:host,android:port,android:path完全满足。有以下匹配条件:
(1).如果目标组件&/>子元素只指定android:scheme属性,那么只要Intent 的Data属性的scheme部分与android:scheme属性值相同,即可启动该组件。
(2).如果目标组件&/>子元素只指定android:scheme属性,android:host 属性,那么只要Intent的Data属性的scheme,host部分与android:scheme,android:host 属性值相同,即可启动该组件。
(3).如果目标组件&/>子元素只指定android:scheme属性,android:host,android:port属性,那么要求Intent的Data属性的scheme,host,port部分与android:scheme,android:host,android:port属性值相同,即可启动该组件。
(4).如果目标组件&/>子元素只指定android:scheme,android:host,android:path,属性,那么只要求Intent的Data属性的scheme,host,path部分与android:scheme,android:host,android:path的属性值相同,即可启动该组件。
(5).如果目标组件&/>子元素只指定android:scheme,android:host,android:port,android:path,属性,那么就要求Intent的Data属性的scheme,host,port,path部分依次与android:scheme,android:host,android:port,android:path的属性值相同,即可启动该组件。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论