Glimpse: Try to set proper mime type when sharing media

We also have to grant read URI permission in case
the receiving end doesn't have the read media permission.

Change-Id: I28b77b680bdff123a0c737eb41ddcdbe34dba1cb
This commit is contained in:
Luca Stefani 2023-08-07 18:52:06 +02:00 committed by Sebastiano Barezzi
parent 568bd417f2
commit 1cb30ec8bb
2 changed files with 14 additions and 5 deletions

View File

@ -6,13 +6,22 @@
package org.lineageos.glimpse.ext
import android.content.Intent
import android.net.Uri
import org.lineageos.glimpse.models.Media
import org.lineageos.glimpse.models.MediaType.IMAGE
import org.lineageos.glimpse.models.MediaType.VIDEO
fun Intent.shareIntent(vararg uris: Uri) = apply {
fun Intent.shareIntent(vararg medias: Media) = apply {
action = Intent.ACTION_SEND_MULTIPLE
putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris.toCollection(ArrayList()))
type = "*/*"
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 -> "*/*"
}
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
}
fun Intent.editIntent(media: Media) = apply {

View File

@ -280,7 +280,7 @@ class MediaViewerFragment : Fragment(
shareButton.setOnClickListener {
mediaViewerAdapter.getMediaFromMediaStore(viewPager.currentItem)?.let {
val intent = Intent().shareIntent(it.externalContentUri)
val intent = Intent().shareIntent(it)
startActivity(Intent.createChooser(intent, null))
}
}