Доброго времени суток. Сразу говорю - я не 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"/>
стоят. Третий день бюсь. Помогите кто чем может? Советом, ссылкой, статьей? Может решением?