Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 877bedf6 authored by Becky Qiu's avatar Becky Qiu Committed by Android (Google) Code Review
Browse files

Merge "[Overview Sharing] Create the share function for sharing image in overview."

parents 5b97b40e b198d46f
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -22,11 +22,14 @@ 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;

import android.app.prediction.AppTarget;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.graphics.Bitmap;
import android.graphics.Insets;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.Log;

import androidx.annotation.Nullable;
@@ -96,4 +99,12 @@ public class ImageActionsApi {
        ImageActionUtils.saveScreenshot(mSystemUiProxy, screenshot, screenshotBounds, visibleInsets,
                task);
    }

    /**
     * Share the image when user taps on overview share targets.
     */
    @UiThread
    public void shareImage(RectF rectF, ShortcutInfo shortcutInfo, AppTarget appTarget) {
        ImageActionUtils.shareImage(mContext, mBitmapSupplier, rectF, shortcutInfo, appTarget, TAG);
    }
}
+32 −0
Original line number Diff line number Diff line
@@ -22,15 +22,19 @@ import static android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION;
import static com.android.launcher3.util.Executors.THREAD_POOL_EXECUTOR;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;

import android.app.prediction.AppTarget;
import android.content.ClipData;
import android.content.ClipDescription;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Insets;
import android.graphics.Picture;
import android.graphics.Rect;
import android.graphics.RectF;
import android.net.Uri;
import android.util.Log;

@@ -70,6 +74,34 @@ public class ImageActionUtils {
                screenshotBounds, visibleInsets, task);
    }

    /**
     * Launch the activity to share image for overview sharing. This is to share cropped bitmap
     * with specific share targets (with shortcutInfo and appTarget) rendered in overview.
     */
    @UiThread
    public static void shareImage(Context context, Supplier<Bitmap> bitmapSupplier, RectF rectF,
            ShortcutInfo shortcutInfo, AppTarget appTarget, String tag) {
        if (bitmapSupplier.get() == null) {
            return;
        }
        Rect crop = new Rect();
        rectF.round(crop);
        Intent intent = new Intent();
        Uri uri =  getImageUri(bitmapSupplier.get(), crop, context, tag);
        ClipData clipdata = new ClipData(new ClipDescription("content",
                new String[]{"image/png"}),
                new ClipData.Item(uri));
        intent.setAction(Intent.ACTION_SEND)
            .setComponent(new ComponentName(appTarget.getPackageName(), appTarget.getClassName()))
            .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            .addFlags(FLAG_GRANT_READ_URI_PERMISSION)
            .setType("image/png")
            .putExtra(Intent.EXTRA_STREAM, uri)
            .putExtra(Intent.EXTRA_SHORTCUT_ID, shortcutInfo.getId())
            .setClipData(clipdata);
        context.startActivity(intent);
    }

    /**
     * Launch the activity to share image.
     */