Android 动态标签插件

Android 动态标签插件,android,Android,我们有一个基于选项卡的应用程序,需要支持客户添加自己的插件选项卡的能力。启动我们的应用程序时,我需要了解插件的相关信息,以便创建选项卡,将其放置在正确的位置,为其添加标签,为其指定图标,并启动插件活动作为其内容。这似乎是我执行此操作所需的数据: 选项卡优先级(用于排序选项卡) 标签 选项卡图标 选项卡活动(用于通过Intent启动) 以下是我考虑过的一些选择: 即插即用服务。这需要每个插件活动都有一个相关的服务。然后,我将使用PackageManager.QueryInputServices

我们有一个基于选项卡的应用程序,需要支持客户添加自己的插件选项卡的能力。启动我们的应用程序时,我需要了解插件的相关信息,以便创建选项卡,将其放置在正确的位置,为其添加标签,为其指定图标,并启动插件活动作为其内容。这似乎是我执行此操作所需的数据:

  • 选项卡优先级(用于排序选项卡)
  • 标签
  • 选项卡图标
  • 选项卡活动(用于通过Intent启动)
以下是我考虑过的一些选择:

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

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

  • 配置数据。在C++世界中,这些数据将被放置在XML启动文件中,在启动时由应用程序读取。这需要在任何时候添加插件时修改配置。在我们的例子中,这并不是什么大问题,因为我们的目标是一个定制设备,我们是主要的应用程序。但我还是喜欢动态地做。这些数据在安卓系统上驻留在哪里

  • 那么,有人对如何做到这一点有什么建议吗?还有什么其他的解决方案?什么是最有效的

    正如你可能知道的,我对安卓系统还不熟悉。我已经尽了最大的努力找到了实现这一点的方法,但我的工作可能超出了Android的预期标准。

    查看方法(通过意向)。对于发现,他们使用意图过滤器,在匹配活动上使用
    android:name
    android:icon
    属性显示在区域设置插件列表中。这是一个非常灵活的系统,他们有文档和示例代码


    至于在你的应用程序中处理这些数据,你可能需要阅读和的
    查询活动选项
    调用。

    我认为最简单的方法是使用有序广播:

    这样,广播接收器就可以将信息传回发送者。在结果中添加标签、优先级和意图应该很容易,不过对于图标,您可能必须使用
    ContentProvider

    [编辑] 如果图标和标签与活动相匹配,那么Yoni的答案可能会更好。您应该能够使用元数据传递优先级: