• Intent 匹配规则


    本文翻译自Android API Guide,并经过整理.


    Intent 匹配规则:做三项測试:action,data,category
    1.action測试:
    一个过滤器中能够定义零个或多个action,假设Intent不包括action,那么它通过此项測试.假设Intent包括的action,那么须要和过滤器中的action匹配(同样)才干通过測试.假设过滤器不定义action,不论什么Intent都不能通过測试(包括不定义action的Intent).
    2.category測试:
    一个过滤器能够定义零个或多个category,假设Intent未定义category,那么它通过測试,假设Intent中定义了category那么当中的每个category都要在过滤器中匹配到才干通过測试.须要注意的是通过startActivity()或 startActivityForResult()传入的implicit Intent在測试时Android自己主动包括了CATEGORY_DEFAULT,所以假设应用想要接收implicit Intent就必须包括 "android.intent.category.DEFAULT".
    3.data測试:
    一个过滤器能够定义零个或多个data,每个data能够定义一个mimeType和一个URI结构体.URI结构体的组成:
    <scheme>://<host>:<port>/<path>
    这四个域都是可选的,可是假设scheme未定义,host会被忽略,假设host未定义,port会被忽略,假设scheme和host都未定义那么path会被忽略.path能够包括通配符"*".
    当Intent中的URI和过滤中的URI对照时,仅对照过滤中定义的部分.
    当Intent中的URI和MIMETYPE和过滤器中的对照时:
    a.当Intent中没有包括不论什么URI和MIMETYPE时,仅仅有过滤器未定义不论什么URI和MIMETYPE时才干通过測试.
    b.当Intent仅仅包括URI没有包括MIMETYPE时,仅仅有Intent中的URI匹配过滤器的URI且过滤器未定义MIMETYPE时通过測试.
    c.当Intent仅仅包括MIMETYPE时,仅仅有Intent中的MIMETYPE匹配过滤器的MIMETYPE且过滤器未定义URI时通过測试.
    d.当Intent同一时候包括URI和MIMETYPE时,这时进行两部分測试,一是測试Intent中的MIMETYPE和过滤器中的MIMETYPE是否匹配,二是測试URI是否匹配,假设过滤器未定义URI,那么当Intent中的URI包括"file:"或"content:"时通过測试.特别注意,假设过滤器有定义URI,即使Intent中的URI包括"file:"或"content:"也不能通过測试,必须匹配才行.
     
    Intent内容设置:
    设置action使用setAction
    设置category使用addCategory,能够添加多个
    单独设置URI使用setData
    单独设置MIMETYPE使用setType
    同一时候设置URI和MIMETYPE使用setDataAndType
     
     

  • 相关阅读:
    beta阶段贡献分配实施
    Beta发布
    Beta发布——视频博客
    Scrum立会报告+燃尽图(Beta阶段第二周第七次)
    Beta发布——美工+文案
    Scrum立会报告+燃尽图(Beta阶段第二周第六次)
    Scrum立会报告+燃尽图(Beta阶段第二周第五次)
    Scrum立会报告+燃尽图(Beta阶段第二周第四次)
    Scrum立会报告+燃尽图(Beta阶段第二周第三次)
    20181011-1每周例行报告
  • 原文地址:https://www.cnblogs.com/llguanli/p/8385342.html
Copyright © 2020-2023  润新知