Доступ к содержанию res/raw программно (Android)

Я работаю над приложением для Android с несколькими другими людьми, и основное содержание указано нашими разработчиками как текстовые файлы в определенном формате файла, который мы затем анализируем, обрабатываем и служим в приложении. Мы в настоящее время храним их в res/raw.

Это делает вещи большими для разработчиков, потому что, когда они хотят добавить содержание, они просто добавляют файл к res/raw. Это является раздражающим как разработчик, однако, так как мы разработчики затем должны добавить R.raw.the_new_file к массиву в коде, указывающем, который файлы обработать при запуске.

Есть ли способ получить доступ к идентификатору ресурса res/raw программно? Идеально, когда приложение запускается, мы могли позвонить для наблюдения, в котором находятся файлы res/raw, обработайте всех их, таким образом, мы могли устранить маленькие издержки с совпадением содержания res/raw с тем из нашего массива в коде.

Самый многообещающий путь, который я видел, getAssets от Ресурсов, которые позволили бы мне звонить list(String) на AssetManager, но я испытал затруднения, заставив это работать, тем более, что Вы не можете непосредственно звонить "res/raw" как Ваш filepath (или по крайней мере, это не работало, когда я попробовал.

13
задан Cœur 20 April 2018 в 12:16
поделиться

2 ответа

Вы можете использовать отражение.


ArrayList<Integer> list = new ArrayList<Integer>();
Field[] fields = R.raw.class.getFields();
for(Field f : fields)
try {
        list.add(f.getInt(null));
    } catch (IllegalArgumentException e) {
    } catch (IllegalAccessException e) { }

После этого список содержит все идентификаторы ресурсов в папке res/raw. Если вам нужно имя ресурса... f.getName() возвращает его.

17
ответ дан 1 December 2019 в 21:51
поделиться

Вы могли бы использовать

Context.getResources().getIdentifier("filename", "raw", "packagename");

для получения соответствующего идентификатора. однако я не понимаю, почему вы реализуете ваше решение так сложно? какие преимущества для дизайнера? почему они просто не кладут файлы в папку drawable?

1
ответ дан 1 December 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: