我正在尝试使用以下代码保存从相机拍摄的图像:
该函数第一次运行良好。但是当图像(house2.jpg)已经存在时,系统将创建另一个名为“house2(1)。jpg”,“house2(2)。jpg”等的文件(而不是替换旧文件)。
@RequiresApi(Build.VERSION_CODES.Q)
private fun setImageUri(): Uri {
val resolver = contentResolver
val contentValues = ContentValues().apply {
put(MediaStore.MediaColumns.DISPLAY_NAME, "house2.jpg")
put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg")
put(MediaStore.MediaColumns.RELATIVE_PATH, "Pictures/OLArt")
}
imageUri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)
return imageUri!!
}
该函数第一次运行良好。但是当图像(house2.jpg)已经存在时,系统将创建另一个名为“house2(1)。jpg”,“house2(2)。jpg”等的文件(而不是替换旧文件)。
有没有什么我可以在contentValues中设置的东西,来强制解析器替换文件而不是创建副本?
下面是拍照意图的代码。
Intent(MediaStore.ACTION_IMAGE_CAPTURE).also { takePictureIntent ->
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, setImageUri()) //<- i paste in the imageUri here
// Ensure that there's a camera activity to handle the intent
takePictureIntent.resolveActivity(packageManager)?.also {
startActivityForResult(takePictureIntent, 102)
}
}