Я новичок в мобильном программировании и хочу начать с небольшого приложения Musicplayer. Мне нужно найти все файлы, которые заканчиваются на .mp3, .m4a, .wav и так далее. Для этого я хочу сначала получить список всех файлов, а затем отфильтровать аудиофайлы.
Однако, когда я использую getExternalStorageDirectory для получения пути к хранилищу, он возвращает «/ storage / 3139-6333», что, очевидно, неверно.
В основном мне просто любопытно, почему я получаю такой результат и как его исправить.
Предполагается, что READ_EXTERNAL_STORAGE разрешено.
Заранее спасибо.
String state = Environment.getExternalStorageState();
if ((Environment.MEDIA_MOUNTED.equals(state)||Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)))
{
File sd_card = Environment.getExternalStorageDirectory(); //"/storage/3139-6333"
File[] listFile = sd_card .listFiles(); //null
}
@Nofix В целом мой вопрос был довольно странным, надеюсь, мне удалось его улучшить.
Имя хранилища, которое вы получаете взамен, мне кажется абсолютно правильным. На моем устройстве это очень похоже.
Я думаю, у вас уже есть путь, по которому вы хотите выполнить поиск файлов, если да, вы можете использовать базовый алгоритм dfs для поиска нужного файла.
Ниже приведен пример кода для этого, вы можете поместить любой формат в конец, чтобы проверить все файлы на него.
public void search(String path){
File file = new File(path);
File[] files = file.listFiles();
if (files!=null) {
for (File f : files) {
if (f.isDirectory()) {
this.search(f.getAbsolutePath());
}
if (f.getAbsolutePath().endsWith(".txt")) {
System.out.println(f.getAbsolutePath());
}
}
}
}
надеюсь, это поможет.
Я переписал свой вопрос, чтобы было понятнее, в чем мой интерес; однако этот ответ отлично подходит для фактического поиска!
Вы спрашивали у
READ_EXTERNAL_STORAGE
разрешение на использование SD-карты пользователя? (Вы также должны добавить его на свойmanifest.xml
)