我想知道如何轮询已安装的应用程序以获取可用的资源文件夹。我已经打开了一些图标包并验证了其中有一个资源文件夹,并且其中充满了所有icon 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%:
我发现您可以在不使用文件夹名称的情况下从assets目录中读取内容:
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");
那也很不错。目前唯一失败的是如何列出基本目录资产。