<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>

转载于:https://www.cnblogs.com/desire/archive/2012/05/11/2496548.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 错误:在<manifest><application>发现意外元素<intent-filter>。 这个错误通常是由于在<application>标签放置了<intent-filter>标签而导致的。在<application>标签只能包含与应用程序相关的组件,例如<activity>、<service>和<receiver>等。如果您需要在应用程序级别上定义意图过滤器,请将<intent-filter>标签放置在<activity>、<service>或<receiver>标签。 ### 回答2: 在Android应用程序开发,我们经常会遇到一些错误信息,其一个比较常见的错误是“error: unexpected element <intent-filter> found in <manifest><application>”。这个错误表示在manifest文件的application标签出现了不应该出现的intent-filter元素。那么为什么会出现这个错误呢?如何解决呢? 通常在Android应用程序intent-filter元素应该出现在Activity、Service或Receiver标签的内部,它用于指定一个组件所能响应的Intent。但是,如果我们在manifest文件的application标签使用intent-filter元素,就会出现“error: unexpected element <intent-filter> found in <manifest><application>”这个错误。 那么如何解决这个错误呢?解决方法其实很简单,只需要将intent-filter元素移到合适的位置就可以了。首先要确认哪个Activity、Service或Receiver使用了这个intent-filter元素,然后将它移动到相应的标签内即可。例如,如果是在MainActivity使用了intent-filter元素,就需要将它移到MainActivity标签内。如果有多个组件使用了同一个intent-filter元素,就需要将它移到每个组件的标签内。 除了移动intent-filter元素以外,我们也可以使用注释将它暂时屏蔽起来,或者干脆将它删除。但是这些方法都不是最优解,最好的做法还是将intent-filter元素移到正确的位置。 总之,遇到“error: unexpected element <intent-filter> found in <manifest><application>”这个错误时不要惊慌,只需要按照上述方法进行处理即可。同时,我们在开发Android应用程序时也要注意标签的嵌套顺序,避免出现这种错误。 ### 回答3: 这个错误发生在Android应用程序开发,通常是由于在AndroidManifest.xml文件的<application>标签内添加了一个不正确的<intent-filter>标签。 在AndroidManifest.xml文件,<application>标签是用来描述应用程序的基本信息和配置的,如图标、名称、版本号等。而<intent-filter>标签则是告诉系统该组件能够处理哪种类型的Intent。 当一个<intent-filter>标签被放置在<application>标签内部时,会导致系统无法正确处理应用程序的基本信息和配置。因此,出现了“error:unexpected element <intent-filter> found in <manifest><application>”错误。 要解决这个问题,可以检查AndroidManifest.xml文件<application>标签内的所有子元素,确保没有意外插入的<intent-filter>标签。如果发现错误,则可以将它们移除并保存文件,再重新编译应用程序就可以解决这个错误。 总之,在Android应用程序开发,正确的使用<application>和<intent-filter>标签是非常重要的,可以避免许多错误和问题。在增加或修改AndroidManifest.xml文件时,一定要仔细检查,以确保文件的语法和结构是正确的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值