2011-06-09 12 views
7

मैं एंड्रॉइड के लिए एक घटक-आधारित एप्लिकेशन बना रहा हूं। संक्षेप में, मैं रनटाइम के दौरान एक एपीके फ़ाइल लोड करना चाहता हूं और उससे कोड निष्पादित करना चाहता हूं।Android में एक एपीके फ़ाइल से संदर्भ भार

मैंने DexClassLoader का उपयोग कुछ कक्षाओं को लोड करने और तत्काल करने के लिए सफलता के साथ किया, समस्या एपीके के संसाधनों को पढ़ने में निहित है।

मैं इसी तरह createPackageContext() है, जो अपने आवेदन के लिए काम नहीं करता है, क्योंकि यह केवल स्थापित कर रहा है करने के लिए, एक कस्टम Context उद्देश्य यह है कि मैं (उदाहरण के लिए एक LayoutInflater उदाहरण के साथ) इन संसाधनों लोड करने के लिए इस्तेमाल कर सकते हैं बनाने के लिए चाहते हैं संकुल।

+1

यह ऐसा कुछ है जिसे आप कोशिश कर सकते हैं (मैंने खुद को कोशिश नहीं की थी, लेकिन जब मैंने दस्तावेज़ों की खोज की तो मैंने सोचा था): 'PackageManager.getPackageArchiveInfo' एक 'पैकेजइन्फो' वापस कर देगा जो आपको 'ApplicationInfo' प्राप्त करने की अनुमति देगा '। उस ऑब्जेक्ट के साथ आप 'पैकेज प्रबंधक' पर कॉल कर सकते हैं। getResourcesForAplication' आपको 'संसाधन' ऑब्जेक्ट वापस करने के लिए। –

उत्तर

1
  InputStream in = getResources() 
       .openRawResource(R.raw.fileName); 

तो बस इस स्ट्रीम से पढ़ें। यह उदाहरण पढ़ने के लिए res/raw/fileName.html खोल देगा। हालांकि मुझे समझ में नहीं आता कि इस तरह की समस्याग्रस्त तरीके से अपनी खुद की एपीके फ़ाइल से निष्पादन के लिए कक्षाएं क्यों लोड करें। अगर मैं गलत समझता हूं और आपको किसी अन्य एपीके फ़ाइल से लोड करने की आवश्यकता है, तो - उस इनपुट को इनपुट और पढ़ने के लिए कौन से फ़ाइल को खोलने से रोकता है? यह सिर्फ एक ज़िप ज़िप संग्रह संपीड़ित है। मुझे लगता है कि आप डेटा एक्सेस विधियों को ओवरराइड करने के अपने कार्यान्वयन का निर्माण कर सकते हैं और आपके इंस्टेंस में फ़ाइल को संदर्भित करने के लिए फ़ाइल का संदर्भ हो सकता है।