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));
|
trackIdBuilder.deleteCharAt(trackIdBuilder.lastIndexOf(TRACKID_DELIMITER));
|
||||||
|
|
||||||
Uri uri = Uri.parse(TracksColumns.CONTENT_URI + "/" + trackFileFormat.getPreferenceId() + "/" + trackIdBuilder + "/" + Uri.encode(filename));
|
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) {
|
static Set<Track.Id> parseURI(Uri uri) {
|
||||||
@@ -126,6 +125,7 @@ public class ShareContentProvider extends CustomContentProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
private static TrackFileFormat getTrackFileFormat(@NonNull Uri uri) {
|
private static TrackFileFormat getTrackFileFormat(@NonNull Uri uri) {
|
||||||
return switch (uriMatcher.match(uri)) {
|
return switch (uriMatcher.match(uri)) {
|
||||||
case URI_GPX -> TrackFileFormat.GPX;
|
case URI_GPX -> TrackFileFormat.GPX;
|
||||||
@@ -134,16 +134,10 @@ public class ShareContentProvider extends CustomContentProvider {
|
|||||||
case URI_KMZ_WITH_TRACKDETAIL_SENSORDATA_AND_PICTURES ->
|
case URI_KMZ_WITH_TRACKDETAIL_SENSORDATA_AND_PICTURES ->
|
||||||
TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES;
|
TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES;
|
||||||
case URI_CSV -> TrackFileFormat.CSV;
|
case URI_CSV -> TrackFileFormat.CSV;
|
||||||
default ->
|
default -> null;
|
||||||
throw new RuntimeException("Could not derive TrackFileFormat from Uri " + uri);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
private static String getTypeMime(@NonNull Uri uri) {
|
|
||||||
return getTrackFileFormat(uri).getMimeType();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
|
public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
|
||||||
if (uriMatcher.match(uri) == -1) {
|
if (uriMatcher.match(uri) == -1) {
|
||||||
@@ -182,9 +176,9 @@ public class ShareContentProvider extends CustomContentProvider {
|
|||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public String getType(@NonNull Uri uri) {
|
public String getType(@NonNull Uri uri) {
|
||||||
String mime = getTypeMime(uri);
|
TrackFileFormat trackFileFormat = getTrackFileFormat(uri);
|
||||||
if (mime != null) {
|
if (trackFileFormat != null) {
|
||||||
return mime;
|
return trackFileFormat.getMimeType();
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.getType(uri);
|
return super.getType(uri);
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import android.content.res.Resources;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -31,11 +30,13 @@ public enum TrackFileFormat {
|
|||||||
return new KMLTrackExporter(context, contentProviderUtils, false);
|
return new KMLTrackExporter(context, contentProviderUtils, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public String getMimeType() {
|
public String getMimeType() {
|
||||||
return "application/vnd.google-earth.kml+xml";
|
return "application/vnd.google-earth.kml+xml";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
public String getExtension() {
|
public String getExtension() {
|
||||||
return "kml";
|
return "kml";
|
||||||
}
|
}
|
||||||
@@ -50,11 +51,13 @@ public enum TrackFileFormat {
|
|||||||
return new KMZTrackExporter(context, contentProviderUtils, exportPhotos);
|
return new KMZTrackExporter(context, contentProviderUtils, exportPhotos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public String getMimeType() {
|
public String getMimeType() {
|
||||||
return "application/vnd.google-earth.kmz";
|
return "application/vnd.google-earth.kmz";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
public String getExtension() {
|
public String getExtension() {
|
||||||
return "kmz";
|
return "kmz";
|
||||||
}
|
}
|
||||||
@@ -72,11 +75,13 @@ public enum TrackFileFormat {
|
|||||||
return new GPXTrackExporter(contentProviderUtils, context.getString(R.string.app_name));
|
return new GPXTrackExporter(contentProviderUtils, context.getString(R.string.app_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public String getMimeType() {
|
public String getMimeType() {
|
||||||
return "application/gpx+xml";
|
return "application/gpx+xml";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
public String getExtension() {
|
public String getExtension() {
|
||||||
return "gpx";
|
return "gpx";
|
||||||
}
|
}
|
||||||
@@ -88,11 +93,13 @@ public enum TrackFileFormat {
|
|||||||
return new CSVTrackExporter(contentProviderUtils);
|
return new CSVTrackExporter(contentProviderUtils);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public String getMimeType() {
|
public String getMimeType() {
|
||||||
return "text/csv";
|
return "text/csv";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public String getExtension() {
|
public String getExtension() {
|
||||||
return "csv";
|
return "csv";
|
||||||
@@ -115,16 +122,10 @@ public enum TrackFileFormat {
|
|||||||
return preferenceIdLabelMap;
|
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.
|
* Returns the mime type for each format.
|
||||||
*/
|
*/
|
||||||
|
@NonNull
|
||||||
public abstract String getMimeType();
|
public abstract String getMimeType();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -137,6 +138,7 @@ public enum TrackFileFormat {
|
|||||||
/**
|
/**
|
||||||
* Returns the file extension for each format.
|
* Returns the file extension for each format.
|
||||||
*/
|
*/
|
||||||
|
@NonNull
|
||||||
public abstract String getExtension();
|
public abstract String getExtension();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -149,6 +151,7 @@ public enum TrackFileFormat {
|
|||||||
/**
|
/**
|
||||||
* The identifier to be stored in the preferences.
|
* The identifier to be stored in the preferences.
|
||||||
*/
|
*/
|
||||||
|
@NonNull
|
||||||
public String getPreferenceId() {
|
public String getPreferenceId() {
|
||||||
return preferenceId;
|
return preferenceId;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user