Glimpse: Don't use SEND_MULTIPLE if we have a single Uri
Change-Id: Ia4f99ed8fb7a30355f9910c66c808ba091693ca6
diff --git a/app/src/main/java/org/lineageos/glimpse/ext/Intent.kt b/app/src/main/java/org/lineageos/glimpse/ext/Intent.kt
index a144288..b66c202 100644
--- a/app/src/main/java/org/lineageos/glimpse/ext/Intent.kt
+++ b/app/src/main/java/org/lineageos/glimpse/ext/Intent.kt
@@ -11,17 +11,27 @@
import org.lineageos.glimpse.models.MediaType.VIDEO
fun Intent.shareIntent(vararg medias: Media) = apply {
- action = Intent.ACTION_SEND_MULTIPLE
- putParcelableArrayListExtra(
- Intent.EXTRA_STREAM,
- medias.map { it.externalContentUri }.toCollection(ArrayList())
- )
- type = when {
- medias.all { it.mediaType == IMAGE } -> "image/*"
- medias.all { it.mediaType == VIDEO } -> "video/*"
- else -> {
- putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("image/*", "video/*"))
- "*/*"
+ assert(medias.isNotEmpty()) { "No media" }
+
+ if (medias.size == 1) {
+ action = Intent.ACTION_SEND
+ medias[0].let {
+ putExtra(Intent.EXTRA_STREAM, it.externalContentUri)
+ type = it.mimeType
+ }
+ } else {
+ action = Intent.ACTION_SEND_MULTIPLE
+ putParcelableArrayListExtra(
+ Intent.EXTRA_STREAM,
+ medias.map { it.externalContentUri }.toCollection(ArrayList())
+ )
+ type = when {
+ medias.all { it.mediaType == IMAGE } -> "image/*"
+ medias.all { it.mediaType == VIDEO } -> "video/*"
+ else -> {
+ putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("image/*", "video/*"))
+ "*/*"
+ }
}
}
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION