Cześć. Chciałbym zapisać obrazek z kontrolki ImageView do katalogu w pamięci wewnętrznej telefonu. Dla wersji androida <29 wszystko działa pięknie: tworzony jest katalog o nazwie "Malutki Poczet Królów Polskich" a w nim zapisuje się obraz.
Problem występuje dla API>=29: katalog jest tworzony, ale nie mogę wq nim skutecznie zapisać obrazka (katalog pozostaje pusty).
Kod odpowiedzialny za zapis:
private void saveImage(Bitmap bitmap, String name) throws IOException {
//zakładanie katalogu
File mediaStorageDir = new File(Environment.getExternalStorageDirectory(), "Malutki Poczet Królów Polskich");
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Toast.makeText(getApplicationContext(), "Błąd w zakładaniu katalogu!", 1000).show();
}
}
//
OutputStream fos;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ContentResolver resolver = getContentResolver();
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Images.Media.DISPLAY_NAME, name + ".jpg");
contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/jpg");
contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, "/Malutki Poczet Królów Polskich/");
Uri ImageUri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
fos = resolver.openOutputStream(Objects.requireNonNull(ImageUri));
} else {
File filepath = Environment.getExternalStorageDirectory();
File dir = new File(filepath.getAbsolutePath()+"/Malutki Poczet Królów Polskich/");
dir.mkdir();
File file = new File(dir, "OOOO " + name +".jpg");
fos = new FileOutputStream(file);
}
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
Objects.requireNonNull(fos).close();
}
Dzięki za wszelką pomoc!