В чем отличие getExternalFilesDir
от getExternalStorageDir
???
Метод getExternalFilesDir(...)
возвращает объект класса File
, позиционируемый по пути Android/data/data/%APP_PACKAGE_NAME%/
в primary shared/external storage.
Метод getExternalStorageDirectory()
возвращает объект класса File
, позиционируемый по пути (примерно) mnt/sdcard/
(путь к primary shared/external storage).
В Android есть несколько типов хранилищ, на которых могут храниться файлы: внутреннее (internal storage), основное внешнее (primary external storage), дополнительное внешнее (seconday external storage).
Основное внешнее хранилище - это дополнительная SD-карта или часть встроенной флэш-памяти, выделенная в отдельную файловую систему. Эта файловая система доступна для чтения и записи приложениям. Путь к корню основного внешнего хранилища можно получить с помощью getExternalStorageDirectory().
Операционная система для своих нужд может создавать каталоги на основном внешнем хранилище. В частности на нем создаются каталоги для данных приложений. Структура этих каталогов от версии к версии и от устройства к устройству может меняться, поэтому для удобства разработчикам предоставлени функция getExternalFilesDir(), которая возвращает путь к каталогу приложения на внешнем хранилище. При необходимости этот каталог будет создан операционной системой.
У функции getExternalFilesDir()
есть параметр, в котором можно указать тип данных, которые предполагается хранить: DIRECTORY_PICTURES, DIRECTORY_MUSIC и т.д. Для каждого типа данных будет создан свой каталог.
Обратите внимание, что работа с данными в каталоге getExternalFilesDir()
на Android старше 4.4 (SDK меньше 18) требует разрешения:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
Работа с остальными каталогами внешнего хранилища требует разрешения всегда. Причем это разрешение "опасное", поэтому начиная с SDK 23 его необходимо запрашивать у пользователя и проверять результат (но это тема отдельного рассказа).
Советую прочитать еще раз "Руководство", там есть целый раздел.
Если сложно с английским, в разделе "Курсы" есть рассказ на русском про работу с файлами.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть список имен, по которому нажимаюПосле чего должен сохраняться нажатый элемент, который я использую в другом фрагменте
Отправляю файл на сервер с помощью Retrofit2, использую POST метод для отправки файла, POST метод принимает два параметра "file" и "shared-with":
Пытаюсь воспроизвести закодированный h264 в MPEG-TS видеопоток, используя стандартный VideoViewВся программа состоит из одной activity с VideoView, Button и EditText