Android 使用意图匹配 Using intentmatching

通过意图过滤器匹配的意图不仅是为了发现要激活的目标组件,而且为了发现这个设备上的一系列组件的某些东西。

比如,Android 系统通过查找符合条件的所有活动(需要包含指定了动作"android.intent.action.MAIN"和"android.intent.category.LAUNCHER"类别的意图过滤器,如前面章节所述)来产生应用程序启动器,也就是用户可用程序的前置屏幕。

然后它显示在这个启动器里的这些活动的图标和标签。

类似的,它通过查找其过滤器配有"android.intent.category.HOME"元素的活动来发现桌面。

你的应用程序可以用类似的方式使用意图匹配。PackageManager 有一系列的查询query…()方法可以接收一个特定的意图,以及相似的一个解析resolve…()方法系列可以确定应答意图的最佳组件。

比如,queryIntentActivities()返回一个所有活动的列表,而queryIntentServices()返回一个类似的服务列表。

两个方法都不会激活组件;它们仅仅列举能应答的。

对于广播接收者,有一个类似的方法queryBroadcastReceivers()。