Я создаю проект библиотеки андроидов, для которого необходимы некоторые статические ресурсы (images/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
сказал, что проект библиотеки не поддерживает исходные активы. Тогда Кажется, что я должен положить resurces в папку res
.
Но я попытался использовать метод Resources.getSystem().getResources()....
, который не может получить то, что я хочу. И люди говорили, что этот метод может получить ресурсы системного уровня, а не ресурсы уровня приложения.
Если это правда. Означает ли это, что я должен хранить ссылку объекта Context
в любом месте, где хочу получить какие-либо ресурсы?