[英]Android how to remove image from gallery
我从手机中获取了画廊中所有图像的数据。 但是当我想要删除一个选定的图像并且无法删除图像时。 如何使用 java 或 kotlin 删除图库中的图像? 对不起,我的英语很糟糕。 我从图库中获取所有图像的代码:
``` val imageProjection = arrayOf(
MediaStore.Images.Media._ID,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME,
MediaStore.Images.Media.DATE_TAKEN,
MediaStore.Images.Media.SIZE,
MediaStore.Images.Media.DATA,
MediaStore.Images.Media.DISPLAY_NAME,
)
val imageSortOrder = "${MediaStore.Images.Media.DATE_ADDED} DESC"
val cursor = requireActivity().contentResolver.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
imageProjection,
null,
null,
imageSortOrder
)
cursor.use {
if (cursor != null) {
var display_name1=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DISPLAY_NAME)
val idColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID)
val data=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)
val date_taken=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATE_TAKEN)
val id=cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID)
val name=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME)
val size=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.SIZE)
val display_name=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME)
while (cursor.moveToNext()) {
allImages.add(ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, cursor.getLong(idColumn)))
var path=cursor.getString(data)
var file:File=File(path)
var sizeLong=cursor.getLong(size)
var dateTaken=cursor.getLong(date_taken)
listArrayImages.add(
ImageData(
ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, cursor.getLong(idColumn)),
path,
file.name,
sizeLong,
getDate(dateTaken,"dd/MM/yyyy hh:mm:ss")
)
)
}
}
else {
}
} ```
和删除图像的代码:
``` var file: File:File(image_path.toString)
delete(requireActivity(),file)
fun delete(context: Context, file: File): Boolean {
val where = MediaStore.MediaColumns.DATA + "=?"
val selectionArgs = arrayOf(
file.absolutePath
)
val contentResolver = context.`enter code here`contentResolver
val filesUri = MediaStore.Files.getContentUri("external")
contentResolver.delete(filesUri, where, selectionArgs)
if (file.exists()) {
contentResolver.delete(filesUri, where, selectionArgs)
}
return !file.exists()
} ```
但是删除 function 返回 false 并且仍然无法从图库中删除图像
我对你的错误不太了解,但试试这个简单的解决方案来删除画廊的图像。 希望对您有所帮助。
private void deleteImageFromGallery() {
String myGalleryImageFilePath;
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
myGalleryImageFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + Environment.DIRECTORY_PICTURES + File.separator + getString(R.string.app_folder_name) + "/" + imageName;
} else {
myGalleryImageFilePath = Environment.getExternalStorageDirectory() + File.separator + getString(R.string.app_folder_name) + "/" + imageName;
}
File galleryImageDelete = new File(myGalleryImageFilePath);
if (galleryImageDelete.exists()){
if (galleryImageDelete.delete()) {
Toast.makeText(this, "Deleted", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Not Deleted", Toast.LENGTH_SHORT).show();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.