@VitGun

Android 10(SDK 29). Как создать каталог в DCIM?

Доброго времени суток. Сразу говорю - я не android-разработчик. Суть. Два года назад супруга перешла на новую работу. Там нужно было фотографировать различные предметы, именовать файлы с картинками особым образом и далее обрабатывать. Фото она делала на телефон. Переименование занимало много времени и было муторным занятием. Я на ощупь сварганил простое приложение - оно запрашивало номер файла (с заранее проставленным префиксом), открывало камеру, делало снимок и сохраняло с определенным именем (префикс + цифры который ввел пользователь). Все это хозяйство отлично работало на Android 7.0. Но тут случилась оказия - аппарат сменили на Android 10 и прога перестала работать. Путем колдовства, жертвоприношений и возни с отладчиком выяснилось, что проблема в этом куске
private File getOutputMediaFile(String filename)
    {
        File mediaStorageDir = new File (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)+File.separator+"Camera"+File.separator+filename+File.separator);
        if (!mediaStorageDir.exists()){
            if (!mediaStorageDir.mkdirs()){
                Log.d("AutoCAMERA", "failed to create directory");
                return null;
            }
        }
        return new File(mediaStorageDir.getPath()+File.separator+filename+".jpg");
    }

Тут должно было формироваться имя файла и каталог куда сохранятся. И оно работало на 7-й версии. На 10-й выяснилось что getExternalStoragePublicDirectory теперь deprecated. Ок. Порывшись в гугле я нашел волшебные слова

android:requestLegacyExternalStorage="true"

но эта магия не сработала. mediaStorageDir.mkdirs() - упорно возвращает false, т.е. каталог не создается и вся дальнейшая логика летит в тартарары. Отсюда все проблемы. Рылся в гугле. На SO в темах различной свежести советуют применять заклинание android:requestLegacyExternalStorage="true", но оно не работает. Повторюсь - я не android-разработчик. Как создать каталог и записать туда файл на SDK 29? Флаги

<uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

стоят. Третий день бюсь. Помогите кто чем может? Советом, ссылкой, статьей? Может решением?
  • Вопрос задан
  • 210 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы