Android 如何使用MediaColumns?正在等待将Base64编码的图像保存到Gallery

Android 如何使用MediaColumns?正在等待将Base64编码的图像保存到Gallery,android,Android,我的应用程序中的活动将图像表示为Base64编码字符串 我正在抛出saveImage,以便MediaColumns\u挂起将图像保存到设备 插入图像(ContentResolver cr、字符串图像路径、字符串名称、字符串描述) 此方法在API级别29中被弃用。插入图像时应使用MediaColumns#IS#PENDING执行,这为生命周期提供了更丰富的控制 如何将此Base64编码字符串保存到带有MediaColumns#正在挂起的图像库中 以下是我正在进行的尝试: private Uri s

我的应用程序中的活动将图像表示为
Base64编码字符串

我正在抛出
saveImage
,以便
MediaColumns\u挂起
将图像保存到设备

插入图像(ContentResolver cr、字符串图像路径、字符串名称、字符串描述) 此方法在API级别29中被弃用。插入图像时应使用MediaColumns#IS#PENDING执行,这为生命周期提供了更丰富的控制

如何将此Base64编码字符串保存到带有
MediaColumns#正在挂起的图像库中

以下是我正在进行的尝试:

private Uri saveImage(final Bitmap bitmap)
{
    Log.d(TAG, "imageBase64String=" + imageBase64String);
    Log.d(TAG, "getDisplayName()=" + getDisplayName());

    ContentValues values = new ContentValues();
    values.put(MediaStore.Images.Media.DISPLAY_NAME, getDisplayName());
    values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
    values.put(MediaStore.Images.Media.IS_PENDING, 1);
    values.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS);

    ContentResolver resolver = getApplicationContext().getContentResolver();
    Uri collection = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_INTERNAL);
    Uri item = resolver.insert(collection, values);

    try ( ParcelFileDescriptor pfd =
                    resolver.openFileDescriptor(item, "w", null)) {
        // Write data into the pending image.
    } catch ( IOException e) {
        e.printStackTrace();
    }

    // Now that we're finished, release the "pending" status, and allow other apps
    // to view the image.

    values.clear();
    values.put(MediaStore.Images.Media.IS_PENDING, 0);
    resolver.update(item, values, null, null);

    return item;
}
目前我得到

java.lang.UnsupportedOperationException:不支持写入内部存储

我正在模拟器上运行代码

我只想将
Base64编码字符串
保存到
下载库

我还必须返回图像的
URI

编辑

可以将字符串转换为
位图
,并将位图保存到设备