Я получаю много запросов в своем приложении, чтобы разрешить создание пользовательских пакетов значков из BetterCut/Open Home. Как это работает, вы устанавливаете BetterCut или Open Home, тогда вы можете установить тонны этих бесплатных пакетов значков с рынка. После установки оба этих приложения (и другие приложения) будут опробовать эти пакеты значков и использовать значки.Аспекты доступа из другого приложения?
Я хочу знать, как опросить установочные приложения для доступных папок активов. Я открыл несколько пакетов значков и проверил, что там есть папка с ресурсами, и они полны всех файлов png значка.
Я искал здесь, другие кодовые сайты, google и т. Д., Но havn't нашел какие-либо выводы.
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
UPDATE 2 99% Там !!!:
Я понял, что вы можете прочитать из каталога активов, фактически используя имя папки:
InputStream is = assetManager.open("test.png");
Я также пробовал это с активом в Приложении 2 из Приложения 1, где путь к папке является/SSET/значок/image.png:
InputStream is = assetManager.open("icon/image.png");
Затем я понял, что вы можете перечислить каталог внутри активов:
String[] list = assetManager.list("icons");
Это также прекрасно работает. Единственное, что сейчас не удается, - это перечислить основные ресурсы базы.
Это похоже на трюк, спасибо! Также смешно, что цитата о слиянии ресурсов инфраструктуры с папкой с ресурсами принадлежит сотруднику Google Hackbod, который является тем же человеком, который не предоставил ответ здесь. – pcm2a