2011-06-09 44 views
7

我正在爲Android構建基於組件的應用程序。簡而言之,我想在運行時加載APK文件,並從中執行代碼。Android中APK文件的上下文加載

我用DexClassLoader成功加載和實例化一些類,問題在於閱讀APK的資源。

我想創建一個自定義Context對象,我可以用它來加載這些資源(與LayoutInflater實例爲例),該createPackageContext(),它不適合我的應用工作,因爲它只是尋找到已安裝的類似包。

+1

這是你可以嘗試的東西(我沒有嘗試過自己,但是當我搜索文檔時,這就是我想的):'PackageManager.getPackageArchiveInfo'將返回一個'PackageInfo',它將允許你得到一個'ApplicationInfo '。有了這個對象,你可以調用'PackageManager。 getResourcesForApplication'返回一個'Resources'對象。 – 2012-12-06 19:11:24

回答

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

然後只是從這個流中讀取。這個例子會打開res/raw/fileName.html進行閱讀。然而,我不明白爲什麼要以這樣一種有問題的方式從你自己的apk文件中加載類執行。如果我誤解了,並且需要從其他某個apk文件加載,那麼 - 誰不能打開該文件以進行輸入並從中讀取?它只是一個壓縮ZIP壓縮文件。我認爲您可以構建您的實現覆蓋數據訪問方法,並且您的實例可以包含從何處讀取數據的文件引用。