Android Kotlin从设备存储中删除图像
我有一个应用程序,可以拍摄用户选择的照片,并将其发送到服务器,然后将其存储在那里。我做了那部分,效果很好。问题是,我想在存储这些照片后删除这些照片。我尝试了我在这里或其他网站找到的所有解决方案,但都不起作用,我有这些图片的Uri,因此如何删除它们 这是我如何选择图片的代码Android Kotlin从设备存储中删除图像,android,image,kotlin,Android,Image,Kotlin,我有一个应用程序,可以拍摄用户选择的照片,并将其发送到服务器,然后将其存储在那里。我做了那部分,效果很好。问题是,我想在存储这些照片后删除这些照片。我尝试了我在这里或其他网站找到的所有解决方案,但都不起作用,我有这些图片的Uri,因此如何删除它们 这是我如何选择图片的代码 private fun openImageChooser() { Intent(Intent.ACTION_GET_CONTENT).also { it.type = "image/*&quo
private fun openImageChooser() {
Intent(Intent.ACTION_GET_CONTENT).also {
it.type = "image/*"
it.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
startActivityForResult(
Intent.createChooser(it, "Select Pictures"),
MainActivity.REQUEST_CODE_PICK_IMAGE
)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
when (requestCode) {
MainActivity.REQUEST_CODE_PICK_IMAGE -> {
for (i in 0 until data?.clipData!!.itemCount) {
selectedImagesList.add(data.clipData?.getItemAt(i)!!.uri)
}
uploadImages()
}
}
}
}
这就是我将它们发送到服务器的方式
val imgsList = mutableListOf<MultipartBody.Part>()
for (img in selectedImagesList) {
val parcelFileDescriptor = contentResolver.openFileDescriptor(img, "r", null) ?: return
val inputStream = FileInputStream(parcelFileDescriptor.fileDescriptor)
val file = File(cacheDir, contentResolver.getFileName(img))
val outputStream = FileOutputStream(file)
inputStream.copyTo(outputStream)
val bodyPart = MultipartBody.Part.createFormData(
"files", file.name, RequestBody.create(
MediaType.parse("multipart/form-data"), file
)
)
imgsList.add(bodyPart)
}
MaApi.invoke().uploadImages(
imgsList, "pics"
).enqueue(object : Callback<uploadResponse> {
override fun onResponse(
call: Call<uploadResponse>,
response: Response<uploadResponse>
) {
imgsLayout.snackbar("images upload successfully!!")
}
override fun onFailure(call: Call<uploadResponse>, t: Throwable) {
imgsLayout.snackbar(t.message.toString())
}
})
val imgsList=mutableListOf()
用于(选择的图像列表中的img){
val parcelFileDescriptor=contentResolver.openFileDescriptor(img,“r”,null)?:返回
val inputStream=FileInputStream(parcelFileDescriptor.fileDescriptor)
val file=file(cacheDir,contentResolver.getFileName(img))
val outputStream=FileOutputStream(文件)
inputStream.copyTo(outputStream)
val bodyPart=MultipartBody.Part.createFormData(
“文件”、file.name、RequestBody.create(
parse(“多部分/表单数据”),文件
)
)
imgsList.add(车身部件)
}
MaApi.invoke().uploadImages(
imgsList,“图片”
).enqueue(对象:回调{
覆盖响应(
呼叫:呼叫,,
答复:答复
) {
snackbar(“图像上传成功!!”)
}
覆盖失效时的乐趣(调用:调用,t:可丢弃){
imgsLayout.snackbar(t.message.toString())
}
})