0

我有一个测试项目 Y 的测试项目 X。项目 Y 有库 Z 作为参考。图书馆 Z 有一个原始资源 R1,我正在尝试打开它,但我一直找不到资源。原始资源位于库内的 res/raw 文件夹中。

我用相关的 packageManager 尝试了 openRawResource,但它似乎没有帮助。任何的想法?我的资源分配是否存在逻辑错误?

没用:

PackageManager pmMgr = getInstrumentation().getTargetContext().getPackageManager();
Resources rMgr = pmMgr.getResourcesForApplication("PROJECT.Y.PACKAGE");
InputStream is = rMgr.openRawResource(package.library.z.raw.R1);

也没有

PackageManager pmMgr = getInstrumentation().getContext().getPackageManager();
Resources rMgr = pmMgr.getResourcesForApplication("PROJECT.Y.PACKAGE");
InputStream is = rMgr.openRawResource(package.library.z.raw.R1);

PS 我验证了 R1 也被包装到 res/raw 下的引用项目 (Y) 的 .apk 中。

4

1 回答 1

1

回答我自己的问题。虽然我的问题已经过去了一天。我已经在这个问题上苦苦挣扎了几天。

解决方案非常愚蠢。较新版本的 ADT 要求您使用项目库来调用资源,即使它们来自引用的库。例如,工作代码示例是:

PackageManager pmMgr = getInstrumentation().getTargetContext().getPackageManager();
Resources rMgr = pmMgr.getResourcesForApplication("PROJECT.Y.PACKAGE");
InputStream is = rMgr.openRawResource(package.library.Y.raw.R1);

唯一的变化是在最后一行,Y 而不是 Z。

于 2012-10-11T07:05:15.023 回答