获取其他应用程序的资源

时间:2011-08-26 13:31:57

标签: android android-resources

假设我有2个申请A和B.

我想从A应用程序访问B应用程序的资源(drawables,图像,字符串)。我该怎么办?

编辑:

  

您还可以将Android项目指定为库项目,从而允许它与依赖它的其他项目共享。将Android项目指定为库项目后,无法将其安装到设备上。

这是否意味着我无法在Android市场上使用我的库? 我的目标是使用应用程序A的默认资源,但如果有人可以下载应用程序B并使用它资源。

4 个答案:

答案 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中,然后执行以下操作:

  1. 在appB中获取drawable的标识符(例如,R.drawable.iconInAppB
  2. 然后,在appA

    Resources res = context.getPackageManager().getResourcesForApplication("com.example.appB");
    
        Drawable d = res.getDrawable(integer);
    //integer was what appB assigned to R.drawable.iconInAppB
    
  3. *注意:分配给R.drawable.iconInAppB的整数id会随着时间的推移而改变,因此不要依赖硬编码。我将键值对(String resourceName,int resourceId)保存在appB中的数据库中,并使用内容提供程序访问它们。