मैं एक एंड्रॉइड लाइब्रेरी प्रोजेक्ट का निर्माण कर रहा हूं जिसके लिए आंतरिक रूप से कुछ स्थिर संसाधन (छवियों/एक्सएमएल और आदि) की आवश्यकता है।एंड्रॉइड लाइब्रेरी प्रोजेक्ट में संसाधनों का उपयोग कैसे करें
तब मुझे आश्चर्य है कि मैं इन संसाधनों को कहां रख सकता हूं और उन्हें कैसे एक्सेस कर सकता हूं?
चूंकि मैंने संसाधनों को assets
फ़ोल्डर में रखा है। और मैं संसाधनों का उपयोग करने AssetManager का उपयोग करें: W/System.err(19583): java.io.FileNotFoundException: t.jpg
समस्या क्या है:
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();
}
}
हालांकि मैं त्रुटि मिल गया?
Sankar V
के रूप में कहा पुस्तकालय परियोजना कच्चे संपत्ति का समर्थन नहीं करता। तो ऐसा लगता है कि मुझे res
फ़ोल्डर के तहत पुनर्जन्म देना है।
लेकिन मैंने Resources.getSystem().getResources()....
विधि का उपयोग करने का प्रयास किया है जो मैं चाहता हूं कि प्राप्त नहीं कर सकता। और लोगों ने कहा कि यह विधि केवल आवेदन स्तर संसाधनों के बजाय सिस्टम स्तर संसाधन प्राप्त कर सकती है।
यदि यह सच है। क्या इसका मतलब यह है कि मुझे कहीं भी Context
ऑब्जेक्ट का संदर्भ रखना है, जहां भी मैं कोई संसाधन प्राप्त करना चाहता हूं?
क्या आपने लिंक को पूरी तरह से चेक किया है जिसे मैंने समाधान के रूप में प्रदान किया था। यह कहता है "हां आप कर सकते हैं अगर आप अपनी लाइब्रेरी का पैकेज नाम जानते हैं" और एक कामकाजी समाधान है। –
मैंने पोस्ट पढ़ा। लेकिन मैं 'संदर्भ' ऑब्जेक्ट तक नहीं पहुंच सकता, इसलिए मैं 'getResources() ....' को कॉल नहीं कर सकता। – hguser
मैं यह पुष्टि करना चाहता हूं कि क्लास डेटाप्रोवाइडर कहां रहता है? लाइब्रेरी प्रोजेक्ट में या एप्लिकेशन प्रोजेक्ट में –