Android 获取其他应用程序的资源
假设我有两个应用程序A和B 我想从应用程序访问B应用程序的资源(绘图、图像、字符串)。我该怎么做 编辑: 您还可以将一个Android项目指定为库项目,这允许它与依赖它的其他项目共享。一旦Android项目被指定为库项目,就无法将其安装到设备上 这是否意味着我不能在android market上使用我的库?Android 获取其他应用程序的资源,android,android-resources,Android,Android Resources,假设我有两个应用程序A和B 我想从应用程序访问B应用程序的资源(绘图、图像、字符串)。我该怎么做 编辑: 您还可以将一个Android项目指定为库项目,这允许它与依赖它的其他项目共享。一旦Android项目被指定为库项目,就无法将其安装到设备上 这是否意味着我不能在android market上使用我的库? 我的目标是使用应用程序A的默认资源,但如果有人知道他可以下载应用程序B并使用it资源,也可以这样做 如果两个应用都是您自己的,并且您希望在构建时捆绑这些资源: 创建一个应用程序,将所有需要的
我的目标是使用应用程序A的默认资源,但如果有人知道他可以下载应用程序B并使用it资源,也可以这样做 如果两个应用都是您自己的,并且您希望在构建时捆绑这些资源: 创建一个应用程序,将所有需要的资源放入其中,并从两个应用程序中引用它
编辑到您的编辑: 您可以在android market中使用该库。你不能单独使用它(编译它)。您必须构建一个使用库的应用程序。当您构建该应用程序时,所有需要的内容基本上都会从库中抓取并复制到您的apk中。你可以像往常一样投放市场
当您想从运行时下载到设备上的应用程序访问资源时,这不起作用。构建使用库项目的应用程序时,库项目会捆绑所有资源。在运行时访问时,Peter Knego的响应是正确的。如果这两个应用程序都是您的,那么这是可能的。或者您可以将任何Android库用于这两个应用程序。如果你想,你也可以为这种工作创造自己的机会。Thnx.如果你是这两个应用程序的开发人员,那么正确的方法是,正如其他人所指出的,创建一个Android库项目并在应用程序之间共享 尽管如此,您仍然可以从其他应用程序访问资源,即使这不是您的应用程序:
Resources res = context.getPackageManager().getResourcesForApplication("com.example.foo")
彼得上面的回答很好,但我想再详细说明一下 当您控制appA和appB并希望在appA中从appB获取可绘图时,请执行以下操作:
R.drawable.iconInAppB
)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将随时间变化,因此不要依赖硬编码。我将键值对(字符串resourceName,int resourceId)保存在appB的数据库中,并使用内容提供者访问它们 例如,让我们从包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();
}
为什么这是一个好主意?这不会使您的代码不可读吗?谢谢,是的,我想在运行时使用它,我将使用Peter Knego way。资源分配的ID改变了每次编译。如何通过名称访问它们?请参见Try
Resources.html#getIdentifier(..)
:(请解释一下-1