Intent

目录

  1. 七大属性
  2. IntentFilter

1. 七大属性

  • 第一类:启动,Component,Action,Category
  • 第二类:传值,Data,Type,Extra
  • 第三类:启动模式,Flag

注意事项:

  • Data属性用来向Action属性提供操作的数据,它接受一个Uri对象
  • Data属性和Type属性会进行相互覆盖,若要同时设置应调用Intent的setDataAndType()方法

2. IntentFilter

  • 一个Intent要同时匹配action类别、category类别、data类别才算完全匹配。一个Activity可以有多组IntentFilter,一个Intent只要能匹配任何一组IntentFilter就算成功
  • action要求Intent中必须有一个action且必须能够和过滤规则中的某个action相同。而category则要求Intent可以没有category,但如果一旦有category,不管有几个,每个都要能和过滤规则中的任何一个category相同

注意事项:

  • 在<intent-filter>内部,只允许<action> <data> <category>三种标签。
    其中,一般不需要为Activity声明<category>标签
  • 启动服务始终使用显示 Intent,且不要为该服务声明过滤器,否则容易造成安全隐患,不加过滤器的 Activity 只能由显示Intent启动
  • 系统在调用startActivity()或startActivityForResult()默认加上了“android.intent.category.DEFAULT”这个category。要我们的activity能够被隐式启动,就必须加上这个category
  • <intent-filter/>中data标签需要配合action标签一起使用,单独只有data标签是无法匹配隐式Intent的。若data中没有指定Uri,默认为content和file,即scheme值需要为content或file才能匹配成功
  • 通过隐式Intent启动一个activity时,最好判断一下是否有activity能够匹配该隐式的activity,PackageManager提供了queryIntentActivities()和resolveActivity()方法,要使用MATCH_DEFAULT_ONLY这个标记位
  • 要确保只有自己的应用才能启动相关组件,请将争对该组件的过滤器的 exported 属性设置为 “false”
    原文作者:blingblingson
    原文地址: https://www.jianshu.com/p/b8cf9d6fd271
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞