diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java
index 2c358302a..a15392b25 100644
--- a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java
+++ b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java
@@ -30,7 +30,6 @@ import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import java.util.UUID;
import de.dennisguse.opentracks.BuildConfig;
import de.dennisguse.opentracks.android.ContentResolverWrapper;
@@ -245,18 +244,6 @@ public class ContentProviderUtils {
return null;
}
- /**
- * @param uuid the UUID of a track.
- */
- public Track getTrack(UUID uuid) {
- try (Cursor cursor = getTrackCursor(TracksColumns.UUID + "=?", new String[]{uuid.toString()}, TracksColumns._ID)) {
- if (cursor != null && cursor.moveToNext()) {
- return createTrack(cursor);
- }
- }
- return null;
- }
-
/**
* Gets a track cursor.
* The caller owns the returned cursor and is responsible for closing it.
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 63b032cb1..17415ad85 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
@@ -273,7 +273,18 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track
trackData.trackStatisticsUpdater.updateTime(trackData.importTime);
}
trackData.track.setTrackStatistics(trackData.trackStatisticsUpdater.getTrackStatistics());
- contentProviderUtils.updateTrack(trackData.track);
+
+ try {
+ contentProviderUtils.updateTrack(trackData.track);
+ } catch (SQLiteConstraintException e) {
+ if (PreferencesUtils.getPreventReimportTracks(context)) {
+ throw e;
+ }
+
+ //TODO This is a workaround until we have proper UI.
+ trackData.track.setUuid(UUID.randomUUID());
+ contentProviderUtils.updateTrack(trackData.track);
+ }
}
/**
diff --git a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java
index a875a0948..a0e9e511f 100644
--- a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java
+++ b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java
@@ -340,6 +340,11 @@ public class PreferencesUtils {
}
}
+ public static boolean getPreventReimportTracks(Context context) {
+ final boolean defaultValue = getBoolean(context, R.bool.import_prevent_reimport_title_default, false);
+ return getBoolean(context, R.string.import_prevent_reimport_title_key, defaultValue);
+ }
+
@Deprecated //Use TrackRecordingService
public static boolean isRecording(Context context) {
long recordingTrackId = getRecordingTrackId(context);
diff --git a/src/main/res/values/settings.xml b/src/main/res/values/settings.xml
index c6b69c8e1..cb370c1ea 100644
--- a/src/main/res/values/settings.xml
+++ b/src/main/res/values/settings.xml
@@ -227,5 +227,8 @@
KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES
+ preventReimportTrackKey
+ false
+
settingsRecordingKey
\ No newline at end of file
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 7779da143..825d22db5 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -390,6 +390,8 @@ limitations under the License.
Imperial (mi, ft)
Metric (km, m)
Preferred units
+
+ Prevent re-import of tracks
Share track file
I think you might be interested in this track.\n\n%1$s
diff --git a/src/main/res/xml/settings.xml b/src/main/res/xml/settings.xml
index 6da8f3fcf..295ee0798 100644
--- a/src/main/res/xml/settings.xml
+++ b/src/main/res/xml/settings.xml
@@ -153,6 +153,10 @@ limitations under the License.
android:key="@string/export_trackfileformat_key"
android:title="@string/settings_default_trackfileformat"
app:useSimpleSummaryProvider="true" />
+