У меня есть файл растрового изображения, и я не хочу сохранять его в каталоге костюмов или в пользовательском файле, например fashtion_project / images / pic1.png. Весь код, который я пробовал, устарел на android 10 или android P ie. мне нужен код для преобразования растрового изображения в файл и сохранения его в пользовательском файле
я пробовал этот код, и он не работает на всех устройствах
void addImageToGallery(Bitmap bmp, Context context) {
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DISPLAY_NAME, "outfit");
values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis());
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
values.put(MediaStore.MediaColumns.RELATIVE_PATH, "Pictures/Shop/");
values.put(MediaStore.Images.Media.IS_PENDING, 1);
Uri collection = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
Uri imageUri = context.getContentResolver().insert(collection, values);
if (imageUri != null) {
OutputStream out = null;
try {
out = context.getContentResolver().openOutputStream(imageUri);
} catch (FileNotFoundException e) {
toastError();
e.printStackTrace();
}
bmp.compress(Bitmap.CompressFormat.JPEG, 90, out);
values.clear();
values.put(MediaStore.Images.Media.IS_PENDING, 0);
context.getContentResolver().update(imageUri, values, null, null);
Toast.makeText(getActivity(), "success", Toast.LENGTH_SHORT).show();
} else {
toastError();
}
}
и до этого я проверял, доступно ли внешнее хранилище для чтения и записи, но это не работает на всех устройствах
/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
что я могу сделать, чтобы решить эту проблему