3

我正在处理的项目要求可以构建 N 个独立应用程序,但还需要一个带有选择菜单的超大应用程序,可以执行其中一个。

这些应用程序之间的区别主要在于资源和 XML,因此它们都使用一个公共库来对资产和 XML 中提供的信息做出反应。

问题在于“母亲”应用程序。它必须能够使用独立资源集之一使用公共库。我意识到我可以使用以下方法访问另一个应用程序资源:

Resources R2 = getPackageManager().getResourcesForApplication("com.example.appa");
int id = R2.getIdentifier("image", "drawable", "com.example.appa");
Drawable myDrawable = R2.getDrawable(id);

这实际上解决了这个问题,我可以向库提供一个包字符串,这样它就会知道在哪里寻找资源。

问题是,为了让它工作,我需要在设备上安装那些独立的应用程序,这是我做不到的(把它想象成一个测验应用程序,独立应用程序只是一个主题,而“母亲”应用程序允许访问所有不同的主题,据我所知,Android Market 不允许下载所有应用程序并安装它们,以便我可以访问它们的资源)。

从概念上讲,如果我可以将这些独立的应用程序作为库并将它们添加到母应用程序中,那么这个问题将得到解决。然后,母应用程序将根据用户选择使用包字符串,然后使用库。到目前为止,我还无法解决这个问题,也找不到有关此的信息,所以恐怕无法完成。

例如,每个主题应用程序都有一个 intro.png,其中包含有关应用程序主题的图像(例如罗马或希腊图像),其想法是访问 package_string.intro.png,以便自动访问正确的取决于用户的选择。

4

1 回答 1

2

经过努力,我终于发现资源已被索引,这意味着一个应用程序中只存在一个“intro.png”,无论您尝试链接多少个库,您都无法创建对 lib1.intro.png 的引用或lib2.intro.png。我终于构建了一个资源管理器系统,可以按需使用“lib1_intro”或“lib2_intro”。不是最干净的解决方案,但是,嗯,我猜它有效......

当我阅读有关接受答案时将我的编辑移至答案,这应该是这样做的,而不是仅仅编辑我的第一篇文章

于 2012-10-22T12:58:06.720 回答