From c8e0eec80e19894eb80fa2d5dbc29fe55d3583c2 Mon Sep 17 00:00:00 2001 From: staphen Date: Sat, 25 Oct 2025 19:05:39 -0400 Subject: [PATCH] Rename files downloaded on Android --- .../diasurgical/devilutionx/DataActivity.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/android-project/app/src/main/java/org/diasurgical/devilutionx/DataActivity.java b/android-project/app/src/main/java/org/diasurgical/devilutionx/DataActivity.java index 03ed9a830..c1a1fec34 100644 --- a/android-project/app/src/main/java/org/diasurgical/devilutionx/DataActivity.java +++ b/android-project/app/src/main/java/org/diasurgical/devilutionx/DataActivity.java @@ -153,7 +153,9 @@ public class DataActivity extends Activity { .setDescription(description) .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE); - File file = fileManager.getFile(fileName); + // Download to a temp file which will be renamed later + // See: https://stackoverflow.com/a/48128014 + File file = fileManager.getFile(fileName + "~"); Uri destination = Uri.fromFile(file); request.setDestinationUri(destination); @@ -184,12 +186,21 @@ public class DataActivity extends Activity { DownloadManager.Query query = new DownloadManager.Query(); query.setFilterById(receivedID); Cursor cur = mgr.query(query); - int index = cur.getColumnIndex(DownloadManager.COLUMN_STATUS); + int statusIndex = cur.getColumnIndex(DownloadManager.COLUMN_STATUS); if (cur.moveToFirst()) { - if (cur.getInt(index) == DownloadManager.STATUS_SUCCESSFUL) { + int status = cur.getInt(statusIndex); + if (status == DownloadManager.STATUS_SUCCESSFUL) { + // Rename temp file by removing the tilde + // See: https://stackoverflow.com/a/48128014 + int titleIndex = cur.getColumnIndex(DownloadManager.COLUMN_TITLE); + String fileName = cur.getString(titleIndex); + File temp = fileManager.getFile(fileName + "~"); + File file = fileManager.getFile(fileName); + temp.renameTo(file); + pendingDownloads--; } - if (cur.getInt(index) == DownloadManager.STATUS_FAILED) { + if (status == DownloadManager.STATUS_FAILED) { isDownloadingSpawn = false; isDownloadingFonts = false; isDownloadingTranslation = false;