如何解决将位图图像保存到Android画廊10的特定位置
我正在使用以下代码:
MediaStore.Images.Media.insertImage(getContentResolver(),bitmap,"title","description");
它运行良好。
问题:
- 它将自动在图库中创建一个名为“图片” 的文件夹。但是我想要其他名称,例如我的应用程序名称。 在Android 10中,MediaStore的
- insertImage()函数已 已淘汰 :
公共静态字符串insertImage(ContentResolver cr, 字符串imagePath, 字符串名称, 字符串说明)
此方法在API级别29中已弃用。 图像的插入应使用MediaColumns#IS_PENDING执行,它可以更丰富地控制生命周期。
我已经阅读了文档,但实际上并不了解IS_PENDING及其用法。
解决方法
尝试一下
private void saveImage(Bitmap bitmap,@NonNull String name) throws IOException {
boolean saved;
OutputStream fos;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ContentResolver resolver = mContext.getContentResolver();
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME,name);
contentValues.put(MediaStore.MediaColumns.MIME_TYPE,"image/png");
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH,"DCIM/" + IMAGES_FOLDER_NAME);
Uri imageUri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues);
fos = resolver.openOutputStream(imageUri);
} else {
String imagesDir = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DCIM).toString() + File.separator + IMAGES_FOLDER_NAME;
File file = new File(imagesDir);
if (!file.exists()) {
file.mkdir();
}
File image = new File(imagesDir,name + ".png");
fos = new FileOutputStream(image)
}
saved = bitmap.compress(Bitmap.CompressFormat.PNG,100,fos);
fos.flush();
fos.close();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。