File.delete(); Почему не работает? Добрый день, у меня такая проблема, не могу удалить файл из галереи. Сначала сохраняю ссылку на скаченный файл в базу:private void saveBase(int i){ ContentValues content = new ContentValues(); SQLiteDatabase database = pricedb.getWritableDatabase(); content.put("images", urs[i]); long rowID = database.insert("db_prices", null, content); Log.e(ConfigVar.LOG_TAG, "URI: "+ urs[i]); } Потом при следующей загрузке изображения чищу базу и удаляю файлы, но файлы не удаляются:private void deleteBase() { SQLiteDatabase database = pricedb.getWritableDatabase(); Cursor cursor = database.query("db_prices", null, null, null, null, null, null); if (cursor.moveToFirst()) { int images = cursor.getColumnIndex("images"); do { String image = cursor.getString(images); File file = new File(image); if (file.exists()) { if (file.delete()) { Log.e(ConfigVar.LOG_TAG, "Файл удалён: "+ image); } else { Log.e(ConfigVar.LOG_TAG,"Файл не найден :"+ image); } } } while (cursor.moveToNext()); } database.delete("db_prices", null, null); } В логах пишет что файл удалён, но в галереи они только умножаются(загружаю каждый раз). P.S: в манифесте:
Проблема может заключаться в том, что после удаления файла из базы данных вы не уведомляете медиа-сканер о том, что файл был удален. Поэтому файл продолжает отображаться в галерее.
Для того чтобы исправить это, попробуйте после удаления файла вызвать метод MediaScannerConnection.scanFile() для сканирования и обновления информации о файлах в системе. Например:
if (file.exists()) { if (file.delete()) { Log.e(ConfigVar.LOG_TAG, "Файл удалён: " + image); // Сканировать файл для обновления информации в системе MediaScannerConnection.scanFile(context, new String[]{file.getAbsolutePath()}, null, null); } else { Log.e(ConfigVar.LOG_TAG, "Файл не найден: " + image); } }
Также убедитесь, что у вас правильно настроены разрешения в манифесте. Если проблема остается, также можете проверить правильность пути к файлу и его доступ к файловой системе.
Проблема может заключаться в том, что после удаления файла из базы данных вы не уведомляете медиа-сканер о том, что файл был удален. Поэтому файл продолжает отображаться в галерее.
Для того чтобы исправить это, попробуйте после удаления файла вызвать метод MediaScannerConnection.scanFile() для сканирования и обновления информации о файлах в системе. Например:
if (file.exists()) {if (file.delete()) {
Log.e(ConfigVar.LOG_TAG, "Файл удалён: " + image);
// Сканировать файл для обновления информации в системе
MediaScannerConnection.scanFile(context, new String[]{file.getAbsolutePath()}, null, null);
} else {
Log.e(ConfigVar.LOG_TAG, "Файл не найден: " + image);
}
}
Также убедитесь, что у вас правильно настроены разрешения в манифесте. Если проблема остается, также можете проверить правильность пути к файлу и его доступ к файловой системе.