动态标签插件

时间:2010-11-18 15:19:06

标签: android

我们有一个基于标签的应用程序,需要支持客户添加自己的插件标签的能力。启动我们的应用程序时,我需要了解插件,以便我可以创建选项卡,将其放在正确的位置,标记它,为其分配图标并启动插件活动作为其内容。看来这是我需要做的数据:

  • 标签优先级(用于订购标签)
  • 标签标签
  • 标签图标
  • Tab活动(通过Intent启动)

这些是我考虑过的一些选项:

  1. 插件服务。这将要求每个插件活动都有相关的服务。然后,我将使用PackageManager.queryIntentServices()来查找具有已知接口的插件服务,然后通过该接口请求有关活动的信息。

  2. 插件意图过滤查询。我不确定这是否可能,但我们的想法是将我需要的数据存储在插件活动的Intent Filter中。我将使用PackageManager.queryIntentActivities()来查找插件活动和ResolveInfo的过滤器字段以获取有关过滤器的信息。但是,我没有关于如何在Intent Filter中存储/检索该信息的详细信息。

  3. 配置数据。在C ++世界中,这些数据将被放置在一个XML配置文件中,该文件在启动时由应用程序读入。这需要在添加插件时修改配置。在我们的情况下,这并不是什么大问题,因为我们的定位设备是我们的主要应用程序。但我仍然喜欢动态地做。这些数据在Android上的位置是什么?

  4. 那么有没有人有关于如何做到这一点的任何建议?还有哪些其他解决方案?什么是最有效的?

    你可能会说,我是Android新手。我已尽力找到实施此方法的方法,但我可能会超出Android的预期标准。

2 个答案:

答案 0 :(得分:1)

查看Locale does plugins的方式(通过意图)。对于发现,他们使用意图过滤器,使用匹配活动的android:nameandroid:icon属性显示在Locale插件列表中。这是一个非常漂亮的系统,他们有文档和示例代码。

就处理您应用中的数据而言,您可能希望阅读ResolveInfoPackageManagerqueryIntentActivityOptions来电。

答案 1 :(得分:0)

我认为最简单的方法是使用有序广播:http://developer.android.com/reference/android/content/Context.html#sendOrderedBroadcast

这样,广播接收者可以将信息传递回发送者。在结果中放置标签,优先级和Intent应该很容易,但对于Icons,您可能必须使用ContentProvider

[编辑] 如果图标和标签与活动相匹配,Yoni的回答可能是一个更好的主意。您应该能够使用元数据传递优先级:http://developer.android.com/guide/topics/manifest/meta-data-element.html