Я получаю много запросов в своем приложении, чтобы разрешить пакеты пользовательских значков от BetterCut / Open Home. Кажется, это работает, если вы устанавливаете BetterCut или Open Home, а затем можете установить множество бесплатных пакетов значков с рынка. После установки оба эти приложения (и другие приложения) будут опрашивать эти пакеты значков и использовать значки.
Я хочу знать, как опрашивать установочные приложения для доступных папок ресурсов. Я открыл несколько пакетов значков и убедился, что там есть папка ресурсов, и они заполнены всеми файлами значков png.
Я искал здесь, на других сайтах с кодом, Google и т. Д., Но не нашел ни одного клиента.
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");
Я также попробовал это с активом в Приложении 2 из Приложения 1, где путь к папке /asset/icon/image.png:
InputStream is = assetManager.open("icon/image.png");
Далее я понял, что вы можете перечислить каталог внутри ресурсов:
String[] list = assetManager.list("icons");
Это тоже прекрасно работает. Единственное, что сейчас не работает, это как составить список основных ресурсов каталога.