документы говорят:
Этот метод устарел на уровне API 29. вставка изображений должна выполняться с использованием MediaColumns # IS_PENDING , который предлагает более широкий контроль над жизненным циклом.
Таким образом, вы можете использовать
public Uri getImageUri(Context inContext, Bitmap inImage) throws IOException {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
{
File file = new File(inContext.getFilesDir(),System.currentTimeMillis()+".jpeg");
if(!file.exists())
{
file.getParentFile().mkdirs();
file.createNewFile();
}
inImage.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(file));
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, file.getName());
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg");
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, file.getPath());
contentValues.put(MediaStore.MediaColumns.IS_PENDING, 0);
return inContext.getContentResolver().insert(Uri.fromFile(file),contentValues);
}
else
{
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
}
Примечание. Этот код не тестировался. Сообщите мне, сработал ли он