【发布时间】:2010-03-16 13:04:25
【问题描述】:
我在我的应用程序中收到很多请求,以允许来自 BetterCut / Open Home 的自定义图标包。它的工作方式似乎是你安装 BetterCut 或 Open Home,然后你可以从市场上安装大量这些免费的图标包。安装后,这两个应用程序(和其他应用程序)都会轮询这些图标包并使用这些图标。
我想知道如何为可用的资产文件夹轮询安装应用程序。我打开了几个图标包,确认里面有一个 assets 文件夹,里面装满了所有的图标 png 文件。
我在这里、其他代码网站、谷歌等上搜索过,但没有找到任何线索。
更新:
根据下面的答案,我编写了一些代码来尝试从我自己的项目资产目录中列出一个文件,但它似乎不起作用。
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 中尝试了此操作,其中文件夹路径为 /asset/icon/image.png:
InputStream is = assetManager.open("icon/image.png");
接下来我发现你可以在 assets 中列出一个目录:
String[] list = assetManager.list("icons");
这也很好用。现在唯一失败的是如何列出基本目录资产。
【问题讨论】:
标签: android