上面的 AndroidManifest.xml 的写法不规范, 只是作为例子, 突出重点部位. 这里就不对<data>,<type>和<category>等元素进行谈论了, 免得加深复杂度(实际上这些我也不会, 见谅了)
在里面
- 一个<intent-filter> 可以有多个 <action> 元素.
- 一个值相同的<action> 可以在多个 <intent-filter> 中出现, 甚至是多个的 <Activity> 中出现.
- <action> A 和 <action> B 对应的是同一个<intent-filter> 和 <Activity>, 它们有什么区别吗?
<action> 的作用是什么? 为什么一个<intent-filter> 中可以有多个 <action>? 不管<intent-filter><action> 怎样, 最后做操作的应该都是 Activity 类对象, 那搞怎么多 <intent-filter>,<action> 干嘛呢? 这是我一开始的疑问.
在Activity 中间的跳转的例子中, 有这样的代码
这段代码里面的 Intent, 是一个间接Intent ,或称为隐式Intent, 有这样的称号, 是因为它不能直接确定要调整的 Activity 是哪个? 它需要通过一个 Action 字符串去寻找对应的 Activity.
还好, "B" 对应的 Activity 只有一个, 顺利跳转!
代码改一下
从上面的 AndroidManifest.xml 文件的, 我们可以看到多个值为 A 的<action>! Oh, My God!, 运行代码后系统将要怎么处理呢?
结果出来了, 一个弹出框, 里面有多个 Activity 可以选择(这些 Activity 都是些加载了各自<intent-filter>的).
"原来是这样", 第一感觉.
我觉得 <action> 就是一个标识, 一个特定的标识或显式地表明其所在 Activity 能做什么操作.
在你的应用中, 你实现了一个 activity 类读取某个类型的文件的功能, 那你给它一个值为 "android.intent.action.VIEW" 的<action> 元素, 表明它有显示的功能. 当另一个应用需要读取这个类型文件的时候, 嘿嘿, 你的 Activity 在出现在选择列表里面了.