隐式匹配,首先要匹配 Intent 的几项值:Action, Category, Data/Type,Component
如果填写了 Componet 就是上例中的 Test.class)这就形成了显示匹配。所以此部分只讲前几
种匹配。匹配规则为最大匹配规则,
1 , 如 果 你 填 写 了 Action , 如 果 有 一 个 程 序 的 Manifest.xml 中 的 某 一 个 Activity 的
IntentFilter 段中定义了包含了相同的 Action 那么这个 Intent 就与这个目标 Action 匹配,如
果这个 Filter 段中没有定义 Type,Category,那么这个 Activity 就匹配了。但是如果手机中有
两个以上的程序匹配,那么就会弹出一个对话可框来提示说明。
Action 的值在 Android 中有很多预定义,如果你想直接转到你自己定义的 Intent 接收者,
你可以在接收者的 IntentFilter 中加入一个自定义的 Action 值(同时要设定 Category 值
为"android.intent.category.DEFAULT"),在你的 Intent 中设定该值为 Intent 的 Action,就直
接能跳转到你自己的 Intent 接收者中。因为这个 Action 在系统中是唯一的。
2,data/type,你可以用 Uri 来做为 data,比如 Uri uri = Uri.parse(http://www.google.com);
Intent i = new Intent(Intent.ACTION_VIEW,uri); 手 机 的 Intent 分 发 过 程 中 , 会 根 据
http://www.google.com 的 scheme 判断出数据类型 type
手 机 的 Brower 则 能 匹 配 它 , 在 Brower 的 Manifest.xml 中 的 IntenFilter 中 首 先 有
ACTION_VIEW Action,也能处理 http:的 type,
3,至于分类 Category,一般不要去在 Intent 中设置它,如果你写 Intent 的接收者,就在
Manifest.xml 的 Activity 的 IntentFilter 中包含 android.category.DEFAULT,这样所有不设置
Category(Intent.addCategory(String c);)的 Intent 都会与这个 Category 匹配。
4,extras(附加信息),是其它所有附加信息的集合。使用 extras 可以为组件提供扩展信息,
“
”
比如,如果要执行 发送电子邮件 这个动作,可以将电子邮件的标题、正文等保存在
extras 里,传给电子邮件发送组件。
三,例子代码:
找软件资料,就到一览软件文库
http://wk.yl1001.com/rj/
2