假设我有2个申请A和B.
我想从A应用程序访问B应用程序的资源(drawables,图像,字符串)。我该怎么办?
编辑:
您还可以将Android项目指定为库项目,从而允许它与依赖它的其他项目共享。将Android项目指定为库项目后,无法将其安装到设备上。
这是否意味着我无法在Android市场上使用我的库? 我的目标是使用应用程序A的默认资源,但如果有人可以下载应用程序B并使用它资源。
答案 0 :(得分:22)
如果您是这两个应用程序的开发人员,那么正如所述,正确的方法是创建一个Android库项目并在应用程序之间共享。
Nevertheles,您仍然可以从其他应用访问资源,即使这不是您的应用:
Resources res = context.getPackageManager().getResourcesForApplication("com.example.foo")
答案 1 :(得分:5)
如果这两个应用都是您自己的,并且您希望在构建时捆绑这些资源:
创建Android Library Project,将所有需要的资源放入其中,并从您的应用中引用它。
修改为您的修改: 您可以在Android市场中使用该库。你不能单独使用它(编译它)。您必须构建一个使用该库的应用程序。当您构建该应用程序时,所有需要的内容基本上从库中获取并复制到您的apk。您可以像往常一样投放市场。
当您想要从运行时下载到设备上的应用程序访问资源时,这不起作用。在构建使用它的应用程序时,库项目会捆绑所有资源。在运行时访问时,Peter Knego的回答是正确的。
答案 2 :(得分:1)
如果这两个应用程序都属于您,则可能。或者您可以将任何Android库用于这两个应用程序。如果您还想为此类工作创建自己的Android Library。日Thnx。
答案 3 :(得分:0)
当你控制appA和appB并希望从appB获得一个drawable时,在appA中,然后执行以下操作:
R.drawable.iconInAppB
)然后,在appA
Resources res = context.getPackageManager().getResourcesForApplication("com.example.appB");
Drawable d = res.getDrawable(integer);
//integer was what appB assigned to R.drawable.iconInAppB
*注意:分配给R.drawable.iconInAppB
的整数id会随着时间的推移而改变,因此不要依赖硬编码。我将键值对(String resourceName,int resourceId)保存在appB中的数据库中,并使用内容提供程序访问它们。