mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-09-30 16:52:21 +02:00
Bugfix: ShareContentProvider should report contentType for all Uris (not only TrackFileFormat).
Part of #2265.
This commit is contained in:
@@ -89,11 +89,10 @@ public class ShareContentProvider extends CustomContentProvider {
|
||||
trackIdBuilder.deleteCharAt(trackIdBuilder.lastIndexOf(TRACKID_DELIMITER));
|
||||
|
||||
Uri uri = Uri.parse(TracksColumns.CONTENT_URI + "/" + trackFileFormat.getPreferenceId() + "/" + trackIdBuilder + "/" + Uri.encode(filename));
|
||||
String mime = getTypeMime(uri);
|
||||
|
||||
Log.d(TAG, "Created uri " + uri + " with MIME " + mime);
|
||||
Log.d(TAG, "Created uri " + uri + " with MIME " + trackFileFormat.getMimeType());
|
||||
|
||||
return new Pair<>(uri, mime);
|
||||
return new Pair<>(uri, trackFileFormat.getMimeType());
|
||||
}
|
||||
|
||||
static Set<Track.Id> parseURI(Uri uri) {
|
||||
@@ -126,6 +125,7 @@ public class ShareContentProvider extends CustomContentProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static TrackFileFormat getTrackFileFormat(@NonNull Uri uri) {
|
||||
return switch (uriMatcher.match(uri)) {
|
||||
case URI_GPX -> TrackFileFormat.GPX;
|
||||
@@ -134,16 +134,10 @@ public class ShareContentProvider extends CustomContentProvider {
|
||||
case URI_KMZ_WITH_TRACKDETAIL_SENSORDATA_AND_PICTURES ->
|
||||
TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES;
|
||||
case URI_CSV -> TrackFileFormat.CSV;
|
||||
default ->
|
||||
throw new RuntimeException("Could not derive TrackFileFormat from Uri " + uri);
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static String getTypeMime(@NonNull Uri uri) {
|
||||
return getTrackFileFormat(uri).getMimeType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
|
||||
if (uriMatcher.match(uri) == -1) {
|
||||
@@ -182,9 +176,9 @@ public class ShareContentProvider extends CustomContentProvider {
|
||||
@Nullable
|
||||
@Override
|
||||
public String getType(@NonNull Uri uri) {
|
||||
String mime = getTypeMime(uri);
|
||||
if (mime != null) {
|
||||
return mime;
|
||||
TrackFileFormat trackFileFormat = getTrackFileFormat(uri);
|
||||
if (trackFileFormat != null) {
|
||||
return trackFileFormat.getMimeType();
|
||||
}
|
||||
|
||||
return super.getType(uri);
|
||||
|
||||
@@ -5,7 +5,6 @@ import android.content.res.Resources;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
@@ -31,11 +30,13 @@ public enum TrackFileFormat {
|
||||
return new KMLTrackExporter(context, contentProviderUtils, false);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String getMimeType() {
|
||||
return "application/vnd.google-earth.kml+xml";
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getExtension() {
|
||||
return "kml";
|
||||
}
|
||||
@@ -50,11 +51,13 @@ public enum TrackFileFormat {
|
||||
return new KMZTrackExporter(context, contentProviderUtils, exportPhotos);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String getMimeType() {
|
||||
return "application/vnd.google-earth.kmz";
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getExtension() {
|
||||
return "kmz";
|
||||
}
|
||||
@@ -72,11 +75,13 @@ public enum TrackFileFormat {
|
||||
return new GPXTrackExporter(contentProviderUtils, context.getString(R.string.app_name));
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String getMimeType() {
|
||||
return "application/gpx+xml";
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getExtension() {
|
||||
return "gpx";
|
||||
}
|
||||
@@ -88,11 +93,13 @@ public enum TrackFileFormat {
|
||||
return new CSVTrackExporter(contentProviderUtils);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String getMimeType() {
|
||||
return "text/csv";
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String getExtension() {
|
||||
return "csv";
|
||||
@@ -115,16 +122,10 @@ public enum TrackFileFormat {
|
||||
return preferenceIdLabelMap;
|
||||
}
|
||||
|
||||
public static TrackFileFormat valueOfPreferenceId(final String preferenceId) {
|
||||
return Arrays.stream(values())
|
||||
.filter(trackFileFormat -> trackFileFormat.getPreferenceId().equals(preferenceId))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the mime type for each format.
|
||||
*/
|
||||
@NonNull
|
||||
public abstract String getMimeType();
|
||||
|
||||
/**
|
||||
@@ -137,6 +138,7 @@ public enum TrackFileFormat {
|
||||
/**
|
||||
* Returns the file extension for each format.
|
||||
*/
|
||||
@NonNull
|
||||
public abstract String getExtension();
|
||||
|
||||
/**
|
||||
@@ -149,6 +151,7 @@ public enum TrackFileFormat {
|
||||
/**
|
||||
* The identifier to be stored in the preferences.
|
||||
*/
|
||||
@NonNull
|
||||
public String getPreferenceId() {
|
||||
return preferenceId;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user