diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java index bc937cb8e..1960acc64 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java @@ -366,15 +366,32 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track /** * Gets the photo url for a file. * - * @param fileName the file name + * @param externalPhotoUrl the file name */ - protected String getPhotoUrl(String fileName) { + protected String getInternalPhotoUrl(String externalPhotoUrl) { if (importTrackId == -1L) { + Log.e(TAG, "Track id is invalid."); + return null; + } + + if (externalPhotoUrl == null) { + Log.i(TAG, "External photo url is null."); + return null; + } + + Uri externalPhotoUri = Uri.parse(externalPhotoUrl); + if (externalPhotoUri == null) { + Log.w(TAG, "Could not parse external photo url."); + return null; + } + String filename = externalPhotoUri.getLastPathSegment(); + if (filename == null) { + Log.w(TAG, "External photo contains no filename."); return null; } File dir = FileUtils.getPhotoDir(context, importTrackId); - File file = new File(dir, fileName); + File file = new File(dir, externalPhotoUrl); Uri photoUri = FileUtils.getUriForFile(context, file); diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporter.java index 792b0a994..f19fcd326 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporter.java @@ -17,7 +17,6 @@ package de.dennisguse.opentracks.io.file.importer; import android.content.Context; -import android.net.Uri; import android.util.Log; import androidx.annotation.VisibleForTesting; @@ -187,9 +186,7 @@ public class KmlFileTrackImporter extends AbstractFileTrackImporter { } // If there is photoUrl it has to be changed because that url in kml file is a relative path to the internal kmz file. - if (photoUrl != null) { - photoUrl = getPhotoUrl(Uri.parse(photoUrl).getLastPathSegment()); - } + photoUrl = getInternalPhotoUrl(photoUrl); addWaypoint(); }