zoukankan      html  css  js  c++  java
  • 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
     
     

  • 相关阅读:
    virtualBox中有线和无线两种情况下centos虚拟机和本地机互ping的方案
    微信小程序支付Java服务端开发源码,及那些你不知道的坑(一)
    SpringCloud微服务项目实战
    SpringCloud微服务项目实战
    SpringCloud微服务项目实战,服务注册与发现(附面试题)
    Spring Cloud微服务项目实战--Eureka服务搭建
    SpringBoot+SpringCloud面试总结都在这里
    SpringBoot 实现系统控制并发登录人数
    Java中大量if...else语句的消除替代方案
    SpringBoot基于数据库的定时任务实现
  • 原文地址:https://www.cnblogs.com/llguanli/p/8385342.html
Copyright © 2011-2022 走看看