美文网首页
IntentFilter的匹配规则

IntentFilter的匹配规则

作者: cauchyoh | 来源:发表于2017-11-02 22:34 被阅读0次

Activity的隐式调用需要明确指定组件信息。原则一个Intent不应该既是显式又是隐式调用,如果两者共存的话以显式为主。

IntentFilter的过滤信息有actioncategorydata。一个activity可以有多个intent-filter,一个intent-filter可以有多个action、category、data。只有intent同时匹配这三个过滤信息才能成功启动目标activity。

action:intent中只要跟过滤规则中的任何一个action相同即可匹配成功,如果没有任何一个匹配会报ActivityNotFoundException的错误,直接crash。区分大小写,非中文字符。

category:intent中可以没有category,一旦intent中有category,无论有几个,那么都必须在过滤规则中找到与它一一匹配的category才匹配成功,而action只要找到一个就行。为了activity能够接收隐式调用,必须在它的过滤规则中添加"android.intent.category.DEFAULT"。因为在调用startActivity或startActivityForResult()时为默认加上这个category。

data:有mimeType和URI两部分组成。mimeType指媒体类型,比如image/jpeg等。而URI的结构为<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern>],例如content://com.xxx.mm:8080/folder/subfolder/some,http://www.qq.com:8080/path/add. scheme和host必须指定,否则URI无效。匹配规则是需要intent中的data和type与过滤规则中的匹配。给intent指定data和type需要调用intent.setDataAndType,而setData、setType会批次清除对方的值。注意的是,URI的默认值为content和file

通过PackManager的resolveActivity或intent的resolveActivity来判断隐式intent是否有匹配的activity,找不到匹配的会返回null,这样判断能够防止程序奔溃。

相关文章

  • IntentFilter的匹配规则

    允许转载请注明出处。 IntentFilter的匹配规则 对于初学者来说,学习IntentFilter的匹配规则还...

  • IntentFilter的匹配规则

    IntentFilter的匹配规则 IntentFilter中的过滤信息有action,category,data...

  • IntentFilter匹配规则

  • IntentFilter匹配规则

    首先废话一下,如果要写东西,csdn和简书还是老老实实选简书。不管什么,就冲csdn不会自动保存,简书会自动保存就...

  • IntentFilter匹配规则

    IntentFilter直译过来就是意图过滤器,我们可以通过它的匹配规则去打开我们想要打开的一类Activity,...

  • IntentFilter的匹配规则

    前言 我们知道,启动Activity分为两种,显示调用和隐式调用。这里主要介绍隐式调用的IntentFilter匹...

  • IntentFilter的匹配规则

    启动Activity分为两种,显示调用和隐式调用。显式调用需要明确的指定被启动对象的组件信息,包括包名和类名...

  • IntentFilter的匹配规则

    我们知道,Activity的启动模式分为两种,分别是显式启动和隐式启动。显式启动需要明确的指定被启动的对象的组件信...

  • IntentFilter 的匹配规则

    1. 显示调用与隐式调用   显示调用需要明确指定被启动对象的组件信息,包括类名与包名,隐式调用不需要明确指定组件...

  • IntentFilter的匹配规则

    Activity的隐式调用需要明确指定组件信息。原则一个Intent不应该既是显式又是隐式调用,如果两者共存的话以...

网友评论

      本文标题:IntentFilter的匹配规则

      本文链接:https://www.haomeiwen.com/subject/ninapxtx.html