Почему мой код не удаляет файл из памяти устройства?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему мой код не удаляет файл из памяти устройства?

Сообщение Anonymous »

Мое приложение для Android хранит изображения транспортных средств с камеры устройства в памяти устройства (/data/files/image1.jpg, /data/files/image2.jpg и т. д.), но я не могу их удалить.< /p>
Транспортные средства представлены на экране Jetpack Compose с возможностью компоновки Card и LazyColumn. На каждой карточке есть кнопка «Удалить», которая работает, за исключением случаев, когда я удаляю карту между двумя другими, на карте после удаленной вместо собственной фотографии отображается фотография удаленной.
Сначала я удаляю запись базы данных, в которой есть поле «путь к изображению» типа ТЕКСТ, поэтому я смогу удалить файл изображения из хранилища устройства. Функция в ViewModel удаляет и запись, и файл изображения, но file.delete() не удаляет их:

Код: Выделить всё

fun deleteVehicle(id:Int,fileName:String){
viewModelScope.launch{
val directory = context.filesDir
val file = File(directory, fileName)
try{
repository.deleteVehicle(id)
if(file.exists()){
file.delete()
}
}catch(e:Exception){
Log.e("ViewModel:","Error while trying to delete the vehicle: ${e.message}")
}
}
}
Как я захватываю изображение с камеры:

Код: Выделить всё

val lanzador = rememberLauncherForActivityResult(
contract = ActivityResultContracts.TakePicturePreview()
) { bitmap: Bitmap? ->
if (bitmap != null) {
val file = File(contexto.filesDir,
"${viewModel.listaVehiculos.value.size}.jpg") // Or .png
try {
FileOutputStream(file).use { out ->
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out) // Or PNG
}
imageBitmap = bitmap.asImageBitmap()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
Единственный способ отобразить правильную фотографию в соответствующем компоненте карты — это снова перейти на тот же экран.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ce-storage
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»