2012-10-10 69 views
0

我有一個測試項目X,測試項目Y.項目Y有庫Z作爲參考。庫Z有一個原始資源R1,我試圖打開,但我一直沒有找到資源。原始資源位於庫中的res/raw文件夾中。訪問被引用項目引用的庫的資源

我試過openRawResource與相關的packageManager但它似乎沒有幫助。 有什麼想法?我的資源分配有沒有邏輯錯誤?

沒有工作:

PackageManager pmMgr = getInstrumentation().getTargetContext().getPackageManager(); 
Resources rMgr = pmMgr.getResourcesForApplication("PROJECT.Y.PACKAGE"); 
InputStream is = rMgr.openRawResource(package.library.z.raw.R1); 

也沒有

PackageManager pmMgr = getInstrumentation().getContext().getPackageManager(); 
Resources rMgr = pmMgr.getResourcesForApplication("PROJECT.Y.PACKAGE"); 
InputStream is = rMgr.openRawResource(package.library.z.raw.R1); 

附: 我驗證了R1在res/raw下也被包裝到引用項目(Y)的.apk中。

回答

1

回答我自己的問題。 儘管我的問題只有一天過去了,但我一直在努力解決這個問題幾天。

該解決方案非常愚蠢。 ADT的較新版本要求您使用項目庫調用資源,即使它們來自引用的庫。例如。對工作的代碼示例是:

PackageManager pmMgr = getInstrumentation().getTargetContext().getPackageManager(); 
Resources rMgr = pmMgr.getResourcesForApplication("PROJECT.Y.PACKAGE"); 
InputStream is = rMgr.openRawResource(package.library.Y.raw.R1); 

唯一的變化是在最後一行,Y代替Z.