Android Intent-filter匹配规则

   

隐式:

1. Intent对象大致包括7大属性:ComponentName、  Action 、 Category 、 Data  、Type、  Extra  、Flags。

2. 一个组件可以声明多个Intent Filter,只需要匹配任意一个即可启动该组件。 一个Intent Filter中的action、type、category可以有多个,所有的action、type、category分别构成不同类别,同一类别信息共同约束当前类别的匹配过程。只有一个Intent同时匹配一个Intent Filter的action、type、category这三个类别才算完全匹配,只有完全匹配才能启动Activity。

3. 隐式Intent必须指定action,可以不指定category但默认category都是android.intent.category.DEFAULT。

4.  Data属性与Type属性的关系比较微妙,这两个属性会相互覆盖,例如:

  • 如果为Intent先设置Data属性,后设置Type属性,那么Type属性将会覆盖Data属性。
  • 如果为Intent先设置Type属性,后设置Data属性,那么Data属性将会覆盖Type属性。
  • 如果希望Intent既有Data属性,也有Type属性,应该调用Intent的setDataAndType()方法。

显式:

Intent downloadIntent = new Intent(this, DownloadService.class);
downloadIntent.setData(Uri.parse(fileUrl));(有一些set可加可不加。如:如果操作是 ACTION_EDIT,则应setData包含待编辑文档的 URI。)
startService(downloadIntent);
posted @ 2022-03-24 02:45  小汀  阅读(59)  评论(0编辑  收藏  举报