From aef8b86b4aeb13e67697d2314980a06f34b1f447 Mon Sep 17 00:00:00 2001 From: Zak Cohen Date: Fri, 19 Jun 2020 11:01:02 -0700 Subject: [PATCH] Image actions - fix uri permissions. Feedback wasn't working, also Share wasn't showing its preview. Bug: 159122067 Test: built and run locally Change-Id: Iccea012a8fc0009a6a980f6233f42c4e7619f4ec --- .../com/android/quickstep/ImageActionsApi.java | 5 ++++- .../android/quickstep/util/ImageActionUtils.java | 16 +++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/ImageActionsApi.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/ImageActionsApi.java index e49c466e80..ba8ba3328b 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/ImageActionsApi.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/ImageActionsApi.java @@ -17,6 +17,7 @@ package com.android.quickstep; import static android.content.Intent.EXTRA_STREAM; +import static android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; import static com.android.quickstep.util.ImageActionUtils.persistBitmapAndStartActivity; @@ -67,7 +68,9 @@ public class ImageActionsApi { UI_HELPER_EXECUTOR.execute(() -> persistBitmapAndStartActivity(mContext, mBitmapSupplier.get(), crop, intent, (uri, intentForUri) -> { - intentForUri.putExtra(EXTRA_STREAM, uri); + intentForUri + .addFlags(FLAG_GRANT_READ_URI_PERMISSION) + .putExtra(EXTRA_STREAM, uri); return new Intent[]{intentForUri}; }, TAG)); diff --git a/quickstep/src/com/android/quickstep/util/ImageActionUtils.java b/quickstep/src/com/android/quickstep/util/ImageActionUtils.java index 0b48a8bda7..f302fdd825 100644 --- a/quickstep/src/com/android/quickstep/util/ImageActionUtils.java +++ b/quickstep/src/com/android/quickstep/util/ImageActionUtils.java @@ -88,8 +88,14 @@ public class ImageActionUtils { @WorkerThread public static void persistBitmapAndStartActivity(Context context, Bitmap bitmap, Rect crop, Intent intent, BiFunction uriToIntentMap, String tag) { - context.startActivities( - uriToIntentMap.apply(getImageUri(bitmap, crop, context, tag), intent)); + Intent[] intents = uriToIntentMap.apply(getImageUri(bitmap, crop, context, tag), intent); + + // Work around b/159412574 + if (intents.length == 1) { + context.startActivity(intents[0]); + } else { + context.startActivities(intents); + } } /** @@ -158,13 +164,13 @@ public class ImageActionUtils { intent = new Intent(); } ClipData clipdata = new ClipData(new ClipDescription("content", - new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN}), + new String[]{"image/png"}), new ClipData.Item(uri)); intent.setAction(Intent.ACTION_SEND) .setComponent(null) - .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + .addFlags(FLAG_GRANT_READ_URI_PERMISSION) .setType("image/png") - .setFlags(FLAG_GRANT_READ_URI_PERMISSION) .putExtra(Intent.EXTRA_STREAM, uri) .setClipData(clipdata); return new Intent[]{Intent.createChooser(intent, null).addFlags(FLAG_ACTIVITY_NEW_TASK)};