<manifest>intert-filter详解

  intent-filter是Manifest文件中的一个标签。可以包含在 <activity> <activity-alias> <service> <receiver>中, 而他本身必须包含<action>标签,另外还有两个标签分别为<category>和<data>,这两个属性不是必须的,可以根据情况来选择添加。

  intent-filter的格式如下:

View Code
    <intent-filter android:icon="drawable resource"
                   android:label="string resource"
                   android:priority="integer" >
        . . .
    </intent-filter>

  intent-filter 指定了 activity(或service或broadcast,该intent-filter放在谁的下边,就是该组件) 可以响应的intent的类型。 明确了他的父组件的能力(包括activity或service可以做什么,或receiver可以接收处理什么样的broadcast)。它可以打开接收到该类型的广播的组件,过滤掉与自己规定的类型不同的intent。

  总的来说,从名字上也可以看出来,这就是一个intent的过滤器,把跟自己规定的类型相同的接收,不相同的过滤掉。

 

  intent-filter含有3个属性,分别是android:icon、android:label、android:priority。当某一个action发送出来之后,有超过一个控件通过了筛选器的过滤,这时候会弹出一个对话框,将所有通过的控件罗列出来待选择,icon和label就是确定的这里的值值,如果这里没有写明这两个值,就会依次向上,先去找activity的,如果还是没有就会使用application的。

  还有一个属性是priority,标明的是优先级,不过我从来没有用过,做测试也没有什么效果,等以后会用了再来填坑。

 

  intent-filter的子标签,有三个,其中<action>是必须含有的,另外如果是activity的话,设置了action后,<category>也必须写明,不然会报错,说找不到相应的activity。还有一个属性是<data>,这几个的内容都比较多,另外开标题来写吧。

  <action>

  <category>

  <data>

posted on 2012-05-11 18:43  佐岸沧海  阅读(562)  评论(0编辑  收藏  举报