background image

   

  

隐式匹配,首先要匹配 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