美文网首页
IntentFilter 的匹配规则

IntentFilter 的匹配规则

作者: Yue_Q | 来源:发表于2018-10-11 09:36 被阅读0次

    1. 显示调用与隐式调用

      显示调用需要明确指定被启动对象的组件信息,包括类名与包名,隐式调用不需要明确指定组件信息。如果两者共存以显示调用为主。
      隐式调用需要 Intent 能够匹配目标组件的 IntentFilter 中过滤信息。过滤信息有 action,category,data。过滤信息可以有多个,只有一个 Intent 同时匹配 action,category,data 匹配成功才能启动目标 Activity 。
      注意:一个 Activity 可以有多个 intent-filter ,Intent 匹配任意一组 intent-filter 可以成功启动 Activity。

    2. action 的匹配规则

       系统预定义了一些 action。一个过滤规则中可以有多个 action ,只要 Intent 中 action 能和过滤规则中任何一个 action 相同即可匹配成功。
      总结:与category匹配规则不同,action 的匹配要求 Intent 中的 action 存在且必须和过滤规则中的其中一个 action 相同,action 区分大小写。

    3. category 的匹配规则

       系统预定义了一些 category ,它要求 Intent 中如果含有 category ,那么所有 category 都必须和过滤规则中的其中一个 category 相同
      注意:不设置 category 也能匹配,因为系统在调用 startActivity 或者 startActivityForResult 的时候会默认为 Intent 加上 "andorid.intent.category.DEFAULT", 为了能 Activity 能接收隐式调用,必须指定以上 category 。

    4. data 的匹配规则

    data 语法结构:由两部分组成 mimeType 和 URI。
    mimeType:指的媒体类型,比如 image/jpeg,video/* 等。
    URI:<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern>]
    content://com.example.mg:100/fold/subfolder/etc
    http://www.axe.com:500/profile/info

    <data android:scheme="string"
     android:host="string"
     android:port="string"
     android:path="string"
     android:pathPattern="string"
     android:pathPrefix="string"
     android:mimeType="string"/>
    

    Scheme:URI的模式。如果URI中没有指定Scheme.那么整个URI无效。默认值为content 和 file。
    Host:URI的host。比如www.axe.com。如果指定了scheme和port,path等其他参数,但是host未指定,那么整个URI无效;如果只指定了scheme,没有指定host和其他参数,URI是有效的。可以这样理解:一个完整的URI :http://www.axe.com:500/profile/info 我将后面的prot 和path“:500/profile/info ”去掉,这个URI任然有效。如果我单独将www.axe.com 那这个URI就无效了。
    Port:URI端口,当URI指定了scheme 和 host 参数时port参数才有意义。
    path:用来匹配完整的路径,如:http://example.com/blog/abc.html,这里将 path 设置为 /blog/abc.html 才能够进行匹配;
    pathPrefix: 用来匹配路径的开头部分,拿上面的 Uri 来说,这里将 pathPrefix 设置为 /blog 就能进行匹配了;
    pathPattern: 用表达式来匹配整个路径。

    相关文章

      网友评论

          本文标题:IntentFilter 的匹配规则

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