Запись файлов на SD карту

Рейтинг: 2Ответов: 1Опубликовано: 18.02.2015

Как записывать файлы на флеш-карту в андроиде?

Пытаюсь создать папку на флеш-карте. Она эту папку не создает, хотя пишет, что есть такая папка при проверке, и даже если убираю sd карту, он пишет, что карта есть. Что я делаю не так?

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
        File sdDir = android.os.Environment.getExternalStorageDirectory();
        File sdPath = new File(sdDir + "/dairy");
        Log.i(tag, sdPath.getPath());
    }

Ответы

▲ 7Принят

@eldqs, вы даже не представляете, насколько это сложная тема - запись на SD карту в Android'е:

Если версия Андроида ниже KitKat (API < 19), то ваш код более-менее работоспособен (при условии наличия пермишенов в манифесте).

Если это не так, то тут начинаются проблемы. С одной стороны, вроде бы под KitKat запрещен доступ к внешней SD карте (ключевое слово внешняя, потому что есть немонтируемые внутренние SD карты, на которые это ограничение не распространяется).

Вроде бы, потому что:

  1. Есть несколько более-менее успешных эксплойтов и патчей, используя которые можно обойти ограничение KitKat - погуглите с ключевыми словами: kitkat external storage.
  2. Даже в рамках KitKat можно писать на внешнюю SD карту, при условии, что пишется каталог на внешней SD карте возвращаемый методом: Context.getExternalFilesDir. Но надо учесть при этом, что этот каталог будет удаляться при сносе приложения. В принципе можно переопределять положение этого каталога, переопределив указанный метод.

Так что дерзайте.