mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-09-30 16:52:21 +02:00
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.
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user