我正在构建一个Android库项目,需要在内部使用一些静态资源(如图像、XML等)。
然后我想知道在哪里可以放置这些资源以及如何访问它们?
由于我将资源放置在 assets
文件夹中,因此我使用 AssetManager 来访问这些资源:
public class DataProvider {
byte[] getDrawableData(int num) {
AssetManager am = Resources.getSystem().getAssets();
InputStream is = null;
try {
is = am.open("t.jpg");
} catch (IOException e) {
return "".getBytes();
}
if (is != null) {
Drawable dw = Drawable.createFromStream(is, null);
Bitmap bm = ((BitmapDrawable) dw).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, stream);
return stream.toByteArray();
}
return "".getBytes();
}
}
然而我遇到了错误:W/System.err(19583): java.io.FileNotFoundException: t.jpg
问题出在哪里?
如同Sankar V
所说,库项目不支持原始资源。看来我得将资源放在res
文件夹下。
但我已经尝试使用 Resources.getSystem().getResources()....
方法获取我想要的资源,但是人们说这个方法只能获取系统级别的资源而非应用程序级别的资源。
如果这是真的,那是否意味着我需要在任何我想获取资源的地方都要持有一个Context
对象的引用呢?
context
对象,因此无法调用getResources()...
。 - hguserDataProvider
类位于 Library 项目中。 - hguserR.drawable.image_name
访问存储在drawable中的图像。 - Sankar VDataProvider
类中没有引用context
,所以我无法使用getResources()
方法。 - hguser