Как сохранить файлы во внешнем хранилище 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 и выше. Но на моем смартфоне есть и директивные документы. Итак, нет ли решения сохранить его в документах?

Thx для ответов

крупная галька

Solutions Collecting From Web of "Как сохранить файлы во внешнем хранилище Public Directory DOCUMENTS на Android 4.1.2"

Вы не можете получить доступ к DIRECTORY_DOCUMENTS потому что его нет в Android 4.1.2. Это означает, что хотя в вашем внешнем хранилище есть каталог Documents, на него не указывается 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 } 

Папка присутствует в старых версиях (от Api 1) Android, но поле DIRECTORY_DOCUMENTS доступно в версии 4.4 (Api 19 – Kitkat).

Решение для меня было использовать Environment.getExternalStorageDirectory() + "/Documents" вместо DIRECTORY_DOCUMENTS для более старых версий Android.