#java #android #android-sdcard
#java #Android #android-sdcard
Вопрос:
Я не могу получить файлы PDF со съемного хранилища (SD-карты).
Я успешно извлек все ссылки на PDF-файлы во внешнем хранилище, используя следующий метод
public String findBooks() {
String pdf = ".pdf";
String epub = ".epub";
File dir = Environment.getExternalStorageDirectory();
Queue<File> toVisit = new PriorityQueue<>();
toVisit.add(dir);
String pdfs = "";
int pdfCount = 0;
if (toVisit.size() != 0) {
while(true){
File file = toVisit.remove();
File[] tmpList = file.listFiles();
int i;
for(i = 0; i < tmpList.length; i ){
if (tmpList[i].isDirectory()) {
toVisit.add(tmpList[i]);
}
else if (tmpList[i].getName().endsWith(pdf) || tmpList[i].getName().endsWith(epub) ){
pdfs = tmpList[i].toString() ",";
pdfCount = 1;
}
}
if(toVisit.size() == 0){
Toast.makeText(getReactApplicationContext(), "End of search: " String.valueOf(pdfCount), 0).show();
break;
}
}
}
return pdfs;
}
Комментарии:
1. Для получения пути к съемной карте Micro sd посмотрите на второй элемент, возвращенный
getExternalFilesDirs()
. Остальная часть вашего кода может остаться прежней.
Ответ №1:
Я успешно извлек все ссылки на PDF-файлы на внешней SD-карте, используя следующий метод
Этот код работает с внешним хранилищем, а не со съемным хранилищем.
Я думаю, я должен иметь возможность использовать тот же метод для извлечения PDF-файлов из внутреннего хранилища
Нет, потому что у вас нет доступа к внутреннему хранилищу, кроме каталогов, выделенных специально для вашего приложения (например, getFilesDir()
on Context
).
Комментарии:
1. @peter Это было очень проясняющим! Большое вам спасибо. Но тогда как мне получить доступ к PDF-файлам на съемном хранилище
2. @CodeNinja: Вы этого не делаете, особенно в более новых версиях Android. Используйте
ACTION_OPEN_DOCUMENT
и позвольте пользователю выбирать PDF из доступных для пользователя локальных и облачных хранилищ.