[Android] Fix intent mime type when sharing media
Nicolas Pomepuy
git at videolan.org
Fri Oct 11 10:20:19 UTC 2024
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Thu Oct 10 10:05:33 2024 +0200| [25170a13b0a78efd0f75bd7aaca2ddc5839ed5ef] | committer: Duncan McNamara
Fix intent mime type when sharing media
Fixes #3086
> https://code.videolan.org/videolan/vlc-android/commit/25170a13b0a78efd0f75bd7aaca2ddc5839ed5ef
---
application/vlc-android/src/org/videolan/vlc/util/Kextensions.kt | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/application/vlc-android/src/org/videolan/vlc/util/Kextensions.kt b/application/vlc-android/src/org/videolan/vlc/util/Kextensions.kt
index 6e38cb4e28..5fb7dd3249 100644
--- a/application/vlc-android/src/org/videolan/vlc/util/Kextensions.kt
+++ b/application/vlc-android/src/org/videolan/vlc/util/Kextensions.kt
@@ -135,16 +135,19 @@ fun FragmentActivity.share(medias: List<MediaWrapper>) = lifecycleScope.launch {
val intentShareFile = Intent(Intent.ACTION_SEND_MULTIPLE)
val uris = arrayListOf<Uri>()
val title = if (medias.size == 1) medias[0].title else resources.getQuantityString(R.plurals.media_quantity, medias.size, medias.size)
+ var hasVideo = false
+ var hasAudio = false
withContext(Dispatchers.IO) {
medias.filter { it.uri.path != null && File(it.uri.path!!).exists() }.forEach {
val file = File(it.uri.path!!)
+ if (it.type == TYPE_VIDEO) hasVideo = true else hasAudio = true
uris.add(FileProvider.getUriForFile(this at share, "$packageName.provider", file))
}
}
if (isStarted())
if (uris.isNotEmpty()) {
- intentShareFile.type = "*/*"
+ intentShareFile.type = if (hasAudio && !hasVideo) "audio/*" else if(hasVideo && !hasAudio) "video/*" else "*/*"
intentShareFile.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris)
intentShareFile.putExtra(Intent.EXTRA_SUBJECT, title)
intentShareFile.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_message, title))
More information about the Android
mailing list