假设我有 2 个应用程序 A 和 B。
我想从 A 应用程序访问 B 应用程序的资源(绘图、图像、字符串)。我该怎么做?
编辑:
您还可以将 Android 项目指定为库项目,这允许它与其他依赖它的项目共享。一旦将 Android 项目指定为库项目,就无法将其安装到设备上。
这是否意味着我不能在 android 市场上使用我的库?我的目标是使用应用程序 A 的默认资源,而且如果有人可以下载应用程序 B 并使用它的资源。
假设我有 2 个应用程序 A 和 B。
我想从 A 应用程序访问 B 应用程序的资源(绘图、图像、字符串)。我该怎么做?
编辑:
您还可以将 Android 项目指定为库项目,这允许它与其他依赖它的项目共享。一旦将 Android 项目指定为库项目,就无法将其安装到设备上。
这是否意味着我不能在 android 市场上使用我的库?我的目标是使用应用程序 A 的默认资源,而且如果有人可以下载应用程序 B 并使用它的资源。
如果您是这两个应用程序的开发人员,那么正确的方法是,正如其他人指出的那样,创建一个 Android 库项目并在应用程序之间共享它。
尽管如此,您仍然可以从另一个应用程序访问资源,即使这不是您的应用程序:
Resources res = context.getPackageManager().getResourcesForApplication("com.example.foo")
如果这两个应用程序都是您自己的,并且您想在构建时捆绑这些资源:
创建一个Android Library Project,将所有需要的资源放入其中并从您的两个应用程序中引用它。
编辑您的编辑:您可以使用 android 市场中的库。你不能单独使用它(编译它)。您必须构建一个使用该库的应用程序。当您构建该应用程序时,所有需要的内容基本上都会从库中获取并复制到您的 apk 中。您可以照常投放市场。
当您想从在运行时下载到设备上的应用程序访问资源时,这不起作用。当您构建使用它的应用程序时,库项目会捆绑所有资源。在运行时访问时,Peter Knego 的响应是正确的。
如果这两个应用程序都是您的,这是可能的。或者,您可以为这两个应用程序使用任何 Android 库。如果您愿意,您还可以为此类工作创建自己的Android 库。谢谢。
彼得上面的回答很好,但我想详细说明一下......
当您控制 appA 和 appB 并希望从 appB 中获取可绘制对象时,在 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
*注意:分配给的整数 idR.drawable.iconInAppB
会随着时间而改变,所以不要依赖硬编码。我将键值对 (String resourceName, int resourceId) 保存在 appB 的数据库中,并使用内容提供程序访问它们。
例如,让我们entryvalues_font_size
从包中获取 ID 为的字符串数组com.android.settings
String[] enries = null;
try {
// You can get PackageManager from the Context
Resources res = getPackageManager().getResourcesForApplication("com.android.settings");
int resId = res.getIdentifier("entryvalues_font_size", "array", "com.android.settings");
if (resId != 0) {
enries = res.getStringArray(resId);
}
}
catch (NameNotFoundException e) {
e.printStackTrace();
}