diff --git a/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java index d95781ece..830595df7 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java @@ -31,7 +31,6 @@ import java.util.Locale; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.io.file.TrackFileFormat; -import de.dennisguse.opentracks.util.FileUtils; /** * A DialogFragment to select a file type, gpx, kml, etc. @@ -73,7 +72,7 @@ public class FileTypeDialogFragment extends DialogFragment { for (int i = 0; i < choices.length; i++) { TrackFileFormat trackFileFormat = trackFileFormats[i]; String trackFileFormatUpperCase = trackFileFormat.getExtension().toUpperCase(Locale.US); //ASCII upper case - choices[i] = getString(optionId, trackFileFormatUpperCase, FileUtils.getPathDisplayName(trackFileFormat.getExtension())); + choices[i] = getString(optionId, trackFileFormatUpperCase); } return new AlertDialog.Builder(getActivity()) .setNegativeButton(R.string.generic_cancel, new OnClickListener() { diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java index fde2ffdd6..c9c28909c 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java @@ -93,7 +93,7 @@ public class ExportActivity extends FragmentActivity implements FileTypeDialogFr exportDirectory = pickedDirectory.createDirectory(FileUtils.EXPORT_DIR); } - directoryDisplayName = FileUtils.getPathDisplayName(trackFileFormat.getExtension()); + directoryDisplayName = FileUtils.getPath(exportDirectory); exportAsyncTask = new ExportAsyncTask(this, trackFileFormat, exportDirectory); exportAsyncTask.execute(); } @@ -132,8 +132,7 @@ public class ExportActivity extends FragmentActivity implements FileTypeDialogFr } else { iconId = R.drawable.ic_dialog_error_24dp; titleId = R.string.generic_error_title; - message = getString(R.string.export_external_storage_error, processedTrackCount, totalTracks, - directoryDisplayName); + message = getString(R.string.export_external_storage_error, processedTrackCount, totalTracks, directoryDisplayName); } AlertDialog.Builder builder = new AlertDialog.Builder(this).setCancelable(true) .setIcon(iconId).setMessage(message) diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java index 38ae7d5bb..5ed6a17b1 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java @@ -91,7 +91,7 @@ public class ImportActivity extends FragmentActivity implements FileTypeDialogFr public void onFileTypeDone(TrackFileFormat trackFileFormat) { DocumentFile pickedDirectory = DocumentFile.fromTreeUri(this, directoryUri); - directoryDisplayName = FileUtils.getPathDisplayName(trackFileFormat.getExtension()); + directoryDisplayName = FileUtils.getPath(pickedDirectory); importAsyncTask = new ImportAsyncTask(this, trackFileFormat, pickedDirectory); importAsyncTask.execute(); diff --git a/src/main/java/de/dennisguse/opentracks/util/FileUtils.java b/src/main/java/de/dennisguse/opentracks/util/FileUtils.java index c2725bab8..1f240544a 100644 --- a/src/main/java/de/dennisguse/opentracks/util/FileUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/FileUtils.java @@ -20,6 +20,8 @@ import android.content.Intent; import android.net.Uri; import android.os.Environment; +import androidx.documentfile.provider.DocumentFile; + import java.io.File; import de.dennisguse.opentracks.BuildConfig; @@ -57,20 +59,15 @@ public class FileUtils { return photoDirectory; } - /** - * Gets the display name for a path on the external storage. - * - * @param components the components - */ - public static String getPathDisplayName(String... components) { - StringBuilder dirNameBuilder = new StringBuilder(); - dirNameBuilder.append(File.separatorChar); - dirNameBuilder.append(EXPORT_DIR); - for (String component : components) { - dirNameBuilder.append(File.separatorChar); - dirNameBuilder.append(component); + + public static String getPath(DocumentFile file) { + if (file == null) { + return ""; } - return dirNameBuilder.toString(); + if (file.getParentFile() == null) { + return file.getName(); + } + return getPath(file.getParentFile()) + File.pathSeparatorChar + file.getName(); } /**