2

我需要将图像保存在 Android 10 下面的 sd_card 的图片目录中。我已经实现了范围存储&此代码适用于 sdk 29 及更高版本,因为 MediaStore.getExternalVolumeNames 已添加到 sdk 29 中。在 sdk 29 下面如何获取getContentUrisd_card 。

  val values = ContentValues().apply {
            put(MediaStore.Images.Media.DISPLAY_NAME, destinationFileName)
            put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
            put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_PICTURES + File.separator + context.applicationContext.getString(R.string.app_name))
            put(MediaStore.Images.Media.IS_PENDING, 1)
        }

        val storageVolume = if (AppPreferences(context).getSwitchExternalStorage()) MediaStore.getExternalVolumeNames(context).last() else MediaStore.getExternalVolumeNames(context).first()
        val bmp: Bitmap? = BitmapFactory.decodeFile(source)

        val collection = MediaStore.Images.Media.getContentUri(storageVolume)
        val imageUri = context.contentResolver.insert(collection, values)

        context.contentResolver.openOutputStream(imageUri!!).use { out ->
            bmp?.compress(Bitmap.CompressFormat.JPEG, 100, out)
        }

        values.clear()
        values.put(MediaStore.Images.Media.IS_PENDING, 0)
        context.contentResolver.update(imageUri, values, null, null)

请帮我解决这个问题

4

0 回答 0