android 应用可以由第三方扩展吗?

Can android apps be extended by third parties?

我想知道我的 android 应用程序是否可以由第三方扩展 而无需 必须为每个应用程序修改基础应用程序扩展,eclipse 用它的插件做的事情。

基本应用程序会非常简单,某种本地数据管理器(CRUD 操作)。例如,给定的插件可以在额外的 activities/fragments.

中对所述数据执行操作(例如,不同的显示方式)

通过一些小的研究,我发现如果我是基础应用程序和插件的开发者,我可以通过创建用户不能直接访问的新 apk 来实现它 (Main/Launcher) 并从基本应用程序查询设备上是否安装了给定的插件,如果是,则在 UX 上显示其他选项。我可以使用它,但我想知道是否没有其他选项允许第三方扩展。

搜索 "extension points" 似乎没有得到 android 结果。也许这是不可能的?

对于您的特定场景,如果只是简单地从基础应用程序存储和检索数据,您可以使用与联系人应用程序相同的方法,即使用 Content Provider。

您可以在此处阅读有关内容提供程序以及如何实施它们的更多信息:Content Providers | Android Developers

如果您正在考虑扩展已安装的应用程序,则必须预定义一组动态的 类 来呈现数据,以及一组规则和语言/界面从您自己的应用程序中扩展您的应用程序功能的插件。

您还可以考虑在运行时将外部 .jar 文件加载到您的应用程序中。 It looks like others have been successful before

A given plug-in may, for example, do things with said data (different ways of displaying it, for instance) in additional activities/fragments.

第 1 步:将所述数据公开给第三方应用程序,例如通过 ContentProvider

现在,您已经完成了,除了 "show additional options on the UX" 的部分。为此:

第 2 步:记录第三方应用程序在他们希望从您的应用程序启动的任何活动中应具有的 <intent-filter>。这可能涉及自定义操作 and/or 类别 and/or MIME 类型。

第 3 步:当您需要 "show additional options on the UX"(我将其解释为某种列表或菜单)时,使用 PackageManager 上的 queryIntentActivities() 来查找已实施的所有活动<intent-filter> 您在步骤 #2 中记录的,并将它们包含在该列表中。