我正在构建一个内部需要一些静态资源(图像/xml 等)的 android 库项目。
然后我想知道我可以将这些资源放在哪里以及如何访问它们?
由于我将资源放在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
,图书馆项目不支持原始资产。然后看来我必须把resurces放在res
文件夹下。
但是我尝试使用Resources.getSystem().getResources()....
无法得到我想要的方法。而且有人说这种方法只能获取系统级资源,不能获取应用级资源。
如果这是事实。这是否意味着我必须在Context
想要获取任何资源的任何地方保存对象的引用?