Tôi đang xây dựng một dự án thư viện Android cần một số tài nguyên tĩnh (hình ảnh/xml và v.v ...) trong nội bộ.cách truy cập tài nguyên trong dự án thư viện android
Sau đó, tôi tự hỏi nơi tôi có thể đặt các tài nguyên này và cách truy cập chúng?
Vì tôi đã đặt các tài nguyên trong thư mục assets
. Và tôi sử dụng AssetManager để truy cập các nguồn lực:
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();
}
}
Tuy nhiên tôi đã nhận lỗi: W/System.err(19583): java.io.FileNotFoundException: t.jpg
vấn đề là gì?
Vì dự án thư viện không hỗ trợ tài sản thô. Sau đó, Có vẻ như tôi phải đặt các resurces dưới thư mục res
.
Nhưng tôi đã cố gắng sử dụng phương pháp Resources.getSystem().getResources()....
không thể có được những gì tôi muốn. Và mọi người nói rằng phương pháp này chỉ có thể nhận được các tài nguyên ở mức hệ thống hơn là các tài nguyên mức ứng dụng.
Nếu đây là sự thật. Điều đó có nghĩa là tôi phải giữ một tham chiếu của đối tượng Context
ở bất kỳ nơi nào tôi muốn nhận bất kỳ tài nguyên nào không?
bạn đã kiểm tra hoàn toàn liên kết mà tôi đã cung cấp làm giải pháp chưa. Điều đó nói rằng "Có bạn có thể nếu bạn biết tên gói của thư viện của bạn" và có một giải pháp làm việc. –
Tôi đã đọc bài đăng. Nhưng tôi không thể truy cập đối tượng 'context', vì vậy tôi không thể gọi' getResources() .... '. – hguser
Tôi muốn xác nhận nơi lớp DataProvider cư trú? trong dự án Thư viện hoặc trong dự án ứng dụng –