我的應用程序中有很多請求允許來自BetterCut/Open Home的自定義圖標包。它似乎工作的方式是安裝BetterCut或Open Home,然後您可以從市場上安裝大量這些免費圖標包。一旦安裝這些應用程序(和其他應用程序)將輪詢這些圖標包並使用圖標。從另一個應用程序訪問資源?
我想知道如何輪詢可用資產文件夾的安裝應用程序。我已經打開了一些圖標包,並驗證了那裏有一個資產文件夾,它們充滿了所有圖標PNG文件。
我在這裏搜索過,其他代碼網站,谷歌等,但沒有找到任何線索。
UPDATE:
從下面我寫一些代碼,試圖從我自己的項目資產目錄列表中的文件,但它似乎並沒有工作了答案。
Resources r = this.getResources();
AssetManager a = r.getAssets();
String[] list = a.list("/");
Log.d("test", "Length of/is "+list.length);
for (String s : list) {
Log.d("test", s);
}
Log.d("test", "Length of /assets is "+a.list("/assets").length);
Log.d("test", "Length of /assets/ is "+a.list("/assets/").length);
Log.d("test", "Length of /assets/ is "+a.list("/assets/").length);
Log.d("test", "Length of ./assets/ is "+a.list("./assets/").length);
Log.d("test", "Length of ./assets is "+a.list("./assets").length);
這是輸出:
03-16 12:25:04.591: DEBUG/test(13526): Length of/is 6
03-16 12:25:04.591: DEBUG/test(13526): AndroidManifest.xml
03-16 12:25:04.591: DEBUG/test(13526): META-INF
03-16 12:25:04.591: DEBUG/test(13526): assets
03-16 12:25:04.591: DEBUG/test(13526): classes.dex
03-16 12:25:04.591: DEBUG/test(13526): res
03-16 12:25:04.591: DEBUG/test(13526): resources.arsc
03-16 12:25:04.614: DEBUG/test(13526): Length of /assets is 0
03-16 12:25:04.637: DEBUG/test(13526): Length of /assets/ is 0
03-16 12:25:04.661: DEBUG/test(13526): Length of /assets/ is 0
03-16 12:25:04.692: DEBUG/test(13526): Length of ./assets/ is 0
03-16 12:25:04.716: DEBUG/test(13526): Length of ./assets is 0
更新2 99%有!!!:
我想通了,你可以從資產目錄,而實際使用的文件夾名稱改爲:
InputStream is = assetManager.open("test.png");
我也試過這與應用程序1中的應用程序2中的資產,其中文件夾路徑是/ a SSET /圖標/ image.png:
InputStream is = assetManager.open("icon/image.png");
接下來,我想通了,你可以列出內部資產目錄:
String[] list = assetManager.list("icons");
這也偉大工程。現在唯一不能解決的問題是如何列出基本目錄資產。
這似乎是做伎倆,謝謝!另外有趣的是,與資產文件夾合併的框架資產的報價是由Google員工Hackbod提供的,該用戶與此處未提供答案的人員相同。 – pcm2a 2010-03-16 22:01:02