use ACTION_GET_CONTENT for media selection again, fix uri permissions (#695)

main
Konrad Pozniak 7 years ago committed by GitHub
parent 0ef5a16da2
commit 94c37a16c0
  1. 6
      app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java
  2. 24
      app/src/main/java/com/keylesspalace/tusky/service/SendTootService.kt

@ -861,10 +861,10 @@ public final class ComposeActivity
private void sendStatus(String content, Status.Visibility visibility, boolean sensitive, private void sendStatus(String content, Status.Visibility visibility, boolean sensitive,
String spoilerText) { String spoilerText) {
ArrayList<String> mediaIds = new ArrayList<>(); ArrayList<String> mediaIds = new ArrayList<>();
ArrayList<String> mediaUris = new ArrayList<>(); ArrayList<Uri> mediaUris = new ArrayList<>();
for (QueuedMedia item : mediaQueued) { for (QueuedMedia item : mediaQueued) {
mediaIds.add(item.id); mediaIds.add(item.id);
mediaUris.add(item.uri.toString()); mediaUris.add(item.uri);
} }
Intent sendIntent = SendTootService.sendTootIntent(this, content, spoilerText, Intent sendIntent = SendTootService.sendTootIntent(this, content, spoilerText,
@ -1008,7 +1008,7 @@ public final class ComposeActivity
} }
private void initiateMediaPicking() { private void initiateMediaPicking() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE); intent.addCategory(Intent.CATEGORY_OPENABLE);
String[] mimeTypes = new String[]{"image/*", "video/*"}; String[] mimeTypes = new String[]{"image/*", "video/*"};

@ -4,8 +4,11 @@ import android.app.NotificationChannel
import android.app.NotificationManager import android.app.NotificationManager
import android.app.PendingIntent import android.app.PendingIntent
import android.app.Service import android.app.Service
import android.content.ClipData
import android.content.ClipDescription
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri
import android.os.Build import android.os.Build
import android.os.IBinder import android.os.IBinder
import android.os.Parcelable import android.os.Parcelable
@ -270,7 +273,7 @@ class SendTootService : Service(), Injectable {
visibility: Status.Visibility, visibility: Status.Visibility,
sensitive: Boolean, sensitive: Boolean,
mediaIds: List<String>, mediaIds: List<String>,
mediaUris: List<String>, mediaUris: List<Uri>,
inReplyToId: String?, inReplyToId: String?,
replyingStatusContent: String?, replyingStatusContent: String?,
replyingStatusAuthorUsername: String?, replyingStatusAuthorUsername: String?,
@ -287,7 +290,7 @@ class SendTootService : Service(), Injectable {
visibility.serverString(), visibility.serverString(),
sensitive, sensitive,
mediaIds, mediaIds,
mediaUris, mediaUris.map { it.toString() },
inReplyToId, inReplyToId,
replyingStatusContent, replyingStatusContent,
replyingStatusAuthorUsername, replyingStatusAuthorUsername,
@ -299,6 +302,23 @@ class SendTootService : Service(), Injectable {
intent.putExtra(KEY_TOOT, tootToSend) intent.putExtra(KEY_TOOT, tootToSend)
if(mediaUris.isNotEmpty()) {
// forward uri permissions
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
val uriClip = ClipData(
ClipDescription("Toot Media", arrayOf("image/*", "video/*")),
ClipData.Item(mediaUris[0])
)
mediaUris
.drop(1)
.forEach { mediaUri ->
uriClip.addItem(ClipData.Item(mediaUri))
}
intent.clipData = uriClip
}
return intent return intent
} }

Loading…
Cancel
Save