From 5468870a92df373b747d234f4fac9566b0255ce9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=80lex=20Magaz=20Gra=C3=A7a?= Date: Fri, 23 Jan 2026 19:13:38 +0100 Subject: [PATCH] Fix playback when song file name contains '#' with Android media store provider It would interpret the # as a fragment and fail to open the file. I doesn't happen with S2 media provider as song paths are already escaped URIs. --- .../com/simplecityapps/mediaprovider/MediaInfoProvider.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/android/mediaprovider/core/src/main/java/com/simplecityapps/mediaprovider/MediaInfoProvider.kt b/android/mediaprovider/core/src/main/java/com/simplecityapps/mediaprovider/MediaInfoProvider.kt index 55bf97921..5f18a64a0 100644 --- a/android/mediaprovider/core/src/main/java/com/simplecityapps/mediaprovider/MediaInfoProvider.kt +++ b/android/mediaprovider/core/src/main/java/com/simplecityapps/mediaprovider/MediaInfoProvider.kt @@ -2,6 +2,7 @@ package com.simplecityapps.mediaprovider import android.net.Uri import com.simplecityapps.shuttle.model.Song +import java.io.File data class MediaInfo(val path: Uri, val mimeType: String, val isRemote: Boolean) @@ -30,7 +31,12 @@ class AggregateMediaInfoProvider(val providers: MutableSet = song: Song, castCompatibilityMode: Boolean ): MediaInfo { - val uri = Uri.parse(song.path) + val uri: Uri = + if (song.path.startsWith("content://")) { + Uri.parse(song.path) + } else { + Uri.fromFile(File(song.path)) + } return providers.firstOrNull { it.handles(uri) }?.getMediaInfo(song, castCompatibilityMode) ?: MediaInfo(path = uri, mimeType = song.mimeType, isRemote = false) }