Как быстро и эффективно перечислить все файлы с определенным расширением с SD-карты в Android?

Я пытаюсь создать приложение для Android, в котором перечислены все файлы с SD-карты, содержащие определенное расширение. Например: pdf, mp3, txt и т. д.

Я попытался использовать метод getContentURI класса android MediaStore.

MediaStore.Files.getContentUri("");

Но это поддерживается только в Honeycomb и более поздних версиях, тогда как мое приложение также должно поддерживать пряники.

Другой метод, с которым я столкнулся, — это класс FileUtils Apache, код которого показан ниже.

File externalContentDirectory=Environment.getExternalStorageDirectory();
String[] extensions = new String[] {"mp3","pdf","txt"};
Collection<File> files=FileUtils.listFiles(externalContentDirectory, extensions,true);

Проблема в том, что перечисление всех файлов занимает слишком много времени на более медленных телефонах, и много раз из-за этого приложение вылетает.

Есть ли какой-либо другой способ для Android, чтобы вывести список файлов, который быстрее и эффективнее?


person Nikhil Joshi    schedule 18.05.2013    source источник
comment
обратитесь по этой ссылке [Получить файлы определенного формата]: заголовок stackoverflow.com/questions/10381270/   -  person Richa    schedule 18.05.2013


Ответы (1)


Еще одно предложение: код, которым вы поделились в своем вопросе, вы можете поместить в async task, а оттуда обновить свой список, позвонив adapter.notifyDataSetChanged(). Таким образом, ваше приложение не зависнет, и ваш пользователь сможет выполнять другие задачи, пока вы загружаете список.

Обратите внимание: 2 async tasks не могут работать параллельно.

person Ankit    schedule 19.05.2013