From 278f6323f130e29aa9bebf7e86b29676efd03400 Mon Sep 17 00:00:00 2001 From: Matt Votava Date: Sat, 27 Dec 2025 20:23:33 -0800 Subject: [PATCH] track import: get extension from file name, not URI When importing tracks from nextcloud, the URI for a file may be something like content://org.nextcloud.documents/tree/7keh3ot7zmiaxecoktv6bfn6gdygt2lg%2F707/document/7keh3ot7zmiaxecoktv6bfn6gdygt2lg%2F745 The URI contains no ".", so getExtension() would return the whole URI as the extension, resulting in an "Unsupported file format" error. To fix this, also pass DocumentFile.getName() to the ImportWorker. --- .../dennisguse/opentracks/io/file/importer/ImportWorker.java | 5 ++++- .../de/dennisguse/opentracks/io/file/importer/Importer.java | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportWorker.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportWorker.java index 9ee0fcfbc..eb857ab70 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportWorker.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportWorker.java @@ -25,6 +25,7 @@ public class ImportWorker extends Worker { private static final String TAG = ImportWorker.class.getSimpleName(); static final String URI_KEY = "DIRECTORY_URI_KEY"; + static final String FILENAME_KEY = "FILENAME_KEY"; static final String RESULT_SUCCESS_LIST_TRACKIDS_KEY = "RESULT_TRACK_IDS"; static final String RESULT_URI_KEY = "RESULT_URI"; @@ -32,11 +33,13 @@ public class ImportWorker extends Worker { static final String RESULT_FAILURE_IS_DUPLICATE = "RESULT_FAILURE_IS_DUPLICATE"; private final Uri uri; + private final String filename; public ImportWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { super(context, workerParams); uri = Uri.parse(getInputData().getString(URI_KEY)); + filename = getInputData().getString(FILENAME_KEY); } @NonNull @@ -53,7 +56,7 @@ public class ImportWorker extends Worker { .putString(RESULT_URI_KEY, uri.toString()); - String fileExtension = FileUtils.getExtension(uri); + String fileExtension = FileUtils.getExtension(filename); try { if (TrackFileFormat.GPX.getExtension().equals(fileExtension)) { trackIds.addAll(new XMLImporter(new GPXTrackImporter(getApplicationContext(), trackImporter)).importFile(context, uri)); diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/Importer.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/Importer.java index 2f78dc5ac..ab313952a 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/Importer.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/Importer.java @@ -69,6 +69,7 @@ public class Importer { WorkRequest importRequest = new OneTimeWorkRequest.Builder(ImportWorker.class) .setInputData(new Data.Builder() .putString(ImportWorker.URI_KEY, documentFile.getUri().toString()) + .putString(ImportWorker.FILENAME_KEY, documentFile.getName()) .build()) .build();