我的应用程序中有很多请求允许来自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