Как сохранить файлы во внешнем хранилище Public Directory DOCUMENTS на Android 4.1.2
Я хочу сохранить файл на своем смартфоне Android 4.1.2 в каталоге документов.
Этот фрагмент кода:
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),"test.txt");
выбрасывает это исключение:
E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NoSuchFieldError: android.os.Environment.DIRECTORY_DOCUMENTS
Пока этот работает:
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"test.txt");
Но я хочу сохранить свой файл в каталоге документов, а не в загрузках. Ive read DIRECTORY_DOCUMENTS доступен только в Android 4.4 и выше. Но на моем смартфоне есть документы. Итак, нет ли решения сохранить его в документах?
спасибо для ответов
крупная галька
Ответы
Ответ 1
Вы не можете получить доступ к DIRECTORY_DOCUMENTS
потому что его нет в Android 4.1.2. Это означает, что хотя в вашем внешнем хранилище есть каталог "Документы", на него не указывается DIRECTORY_DOCUMENTS
(поскольку он не существует). Чтобы решить эту проблему, вам нужно создать каталог, если он отсутствует, и получить путь к этой папке вручную.
File docsFolder = new File(Environment.getExternalStorageDirectory() + "/Documents");
boolean isPresent = true;
if (!docsFolder.exists()) {
isPresent = docsFolder.mkdir();
}
if (isPresent) {
File file = new File(docsFolder.getAbsolutePath(),"test.txt");
} else {
// Failure
}
Ответ 2
Папка присутствует в старых версиях (от Api 1) Android, но поле DIRECTORY_DOCUMENTS доступно в версии 4.4 (Api 19 - Kitkat).
Решение для меня было использовать Environment.getExternalStorageDirectory() + "/Documents"
вместо DIRECTORY_DOCUMENTS для более старых версий Android.