美文网首页
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的匹配规则

    允许转载请注明出处。 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/mbbvaftx.html