美文网首页
intent-filter使用简介

intent-filter使用简介

作者: caoyy | 来源:发表于2017-11-14 00:58 被阅读0次

Activity的启动方式有显式和隐式。显式需要指定被启动对象的组件信息,比如类名。隐式不需要指定组件信息,但需要Intent能够匹配目标Activity的intent-filter中所设置的过滤信息,如果匹配成功了才能启动目标Activity。

1.那么怎样才是匹配intent-filter成功了呢?

总的来说只要满足以下3点就是匹配intent-filter成功了:

  • 一个Activity中可以有多组intent-filter,一个Intent只要匹配任何一组intent-filter就算匹配成功。

  • 一个intent-filter中可以有多个action,category,data并各自构成不同类别。

  • 一个Intent必须同时匹配action类别,category类别和data类别才算完全匹配。

2.那么如何来匹配action,category,data呢?

(1)action

  • 系统默认定义了一些action。
    如:<action android:name="android.intent.action.MAIN"/>
  • 可以自定义action。
  • action是一个字符串。
  • Intent必须存在action,且只有一个action。
  • Intent只能设置一个action,后面设置的action会覆盖之前设置的action。
  • intent-filter中可以同时有多个action,Intent只需要匹配intent-filter中的一个action即可。

(2)category

  • 系统默认定义了一些category。
    <category android:name="android.intent.category.LAUNCHER"/>
  • 可以自定义category。
  • category是一个字符串。
  • Intent中可以不设置category,这个时候在使用startActivity或者startActivityForResult的时候,系统自动会为你添加默认category(android.intent.category.DEFAULT)。
  • intent-filter中必须添加“android.intent.category.DEFAULT”这个过滤条件。(切记)
  • Intent中可以同时设置多个category,一旦设置多个catrgory,那么每个category都必须能够和intent-filter中的某个category匹配成功。
  • 只通过category匹配是无法匹配到Activity的。因为category属性是一个执行Action的附加信息。

(3)data

总结:

每个Activity可以定义专属于自己的intent-filter,在隐式启动activity时可以模糊定位多个activity或者精准定位一个activity。模糊定位多个activity时,弹出选择框供用户选择。精准定位一个actvity则直接跳转。

相关文章

网友评论

      本文标题: intent-filter使用简介

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