Android:Intent(二):Intent的Data属性和Type属性解析

原创
2014/05/13 11:48
阅读数 1.3K

Intent的Data属性和Type属性解析

    Data属性和Type属性的相互覆盖

        Intent的Data和Type的值会相互覆盖,即如果先设置Data的值,后设置Type的值,Data的值

        会Type的值覆盖,反过来也是这样,想既有Data的值也有Type的值,那么就要调用Intent

        的setDataAndType()方法。


    Data属性和Type属性的设置

        在AndroidMainifest.xml文件中为组件声明Data,Type属性都通过<data../>元素设置的,格式:

<data android:mimeType=""     //声明该组件所能匹配的Intent的Type属性
      android:scheme=""       //声明该组件所能匹配的Intent的Data属性的scheme部分
      android:host=""         //声明该组件所能匹配的Intent的Data属性的host部分
      android:port=""         //声明该组件所能匹配的Intent的Data属性的port部分
      android:path=""         //声明该组件所能匹配的Intent的Data属性的path部分
      android:pathPrefix=""   //声明该组件所能匹配的Intent的Data属性的path前缀
      android:pathPattern=""/>//声明该组件所能匹配的Intent的Data属性的path字符串模板


    Type属性匹配

        Type属性对应组件中<data.../>子元素的mimeType的值必须相同,才能启动组件。


    Data属性的匹配

        Data属性的Uri对象实际可分为scheme,host,port和path部分,此时并不要求这四个部分的值

        必须和<data../>子元素的android:scheme,android:host,android:port,android:path

        完全满足。有以下匹配条件:

            1.如果目标组件<data.../>子元素只指定android:scheme属性,那么只要Intent的Data属性

               的scheme部分与android:scheme属性值相同,即可启动该组件。

            2.如果目标组件<data.../>子元素只指定android:scheme属性,android:host属性,那么只

               要Intent的Data属性的scheme,host部分与android:scheme,android:host属性值相同

              ,即可启动该组件。

            3.如果目标组件<data.../>子元素只指定android:scheme属性,android:host,android:port

               属性,那么要求Intent的Data属性的scheme,host,port部分与android:scheme,

               android:host,android:port属性值相同,即可启动该组件。

            4.如果目标组件<data.../>子元素只指定android:scheme,android:host,android:path

               属性,那么只Intent的Data属性的scheme,host,path部分与android:scheme,

               android:host,android:path的属性值相同,即可启动该组件。            

            5.如果目标组件<data.../>子元素只指定android:scheme,android:host,android:port,

               android:path,属性,那么就要求Intent的Data属性的scheme,host,port,path部分依次

               与android:scheme,android:host,android:port,android:path的属性值相同,即可启

               动该组件。









展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部