diff --git a/packages/SystemUI/res/layout/clipboard_overlay.xml b/packages/SystemUI/res/layout/clipboard_overlay.xml
index 1712b4876b31f..0a8917041d169 100644
--- a/packages/SystemUI/res/layout/clipboard_overlay.xml
+++ b/packages/SystemUI/res/layout/clipboard_overlay.xml
@@ -56,6 +56,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:animateLayoutChanges="true">
+
{
@@ -329,9 +333,11 @@ public class ClipboardOverlayController {
} else {
showEditableText(item.getText(), false);
}
+ showShareChip(clipData);
accessibilityAnnouncement = mContext.getString(R.string.clipboard_text_copied);
} else if (clipData.getItemAt(0).getUri() != null) {
if (tryShowEditableImage(clipData.getItemAt(0).getUri(), isSensitive)) {
+ showShareChip(clipData);
accessibilityAnnouncement = mContext.getString(R.string.clipboard_image_copied);
} else {
accessibilityAnnouncement = mContext.getString(R.string.clipboard_content_copied);
@@ -396,6 +402,12 @@ public class ClipboardOverlayController {
});
}
+ private void showShareChip(ClipData clip) {
+ mShareChip.setVisibility(View.VISIBLE);
+ mShareChip.setAlpha(1f);
+ mShareChip.setOnClickListener((v) -> shareContent(clip));
+ }
+
private OverlayActionChip constructActionChip(RemoteAction action) {
OverlayActionChip chip = (OverlayActionChip) LayoutInflater.from(mContext).inflate(
R.layout.overlay_action_chip, mActionContainer, false);
@@ -471,6 +483,21 @@ public class ClipboardOverlayController {
animateOut();
}
+ private void shareContent(ClipData clip) {
+ mUiEventLogger.log(CLIPBOARD_OVERLAY_SHARE_TAPPED);
+ Intent shareIntent = new Intent(Intent.ACTION_SEND);
+ shareIntent.putExtra(Intent.EXTRA_TEXT, clip.getItemAt(0).getText());
+ shareIntent.setDataAndType(
+ clip.getItemAt(0).getUri(), clip.getDescription().getMimeType(0));
+ shareIntent.putExtra(Intent.EXTRA_STREAM, clip.getItemAt(0).getUri());
+ shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ Intent chooserIntent = Intent.createChooser(shareIntent, null)
+ .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK)
+ .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ mContext.startActivity(chooserIntent);
+ animateOut();
+ }
+
private void showSinglePreview(View v) {
mTextPreview.setVisibility(View.GONE);
mImagePreview.setVisibility(View.GONE);
@@ -738,6 +765,7 @@ public class ClipboardOverlayController {
mView.setTranslationX(0);
mView.setAlpha(0);
mActionContainerBackground.setVisibility(View.GONE);
+ mShareChip.setVisibility(View.GONE);
resetActionChips();
mTimeoutHandler.cancelTimeout();
}
diff --git a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayEvent.java b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayEvent.java
index 5604a9128261b..90739790b1c1a 100644
--- a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayEvent.java
+++ b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayEvent.java
@@ -26,6 +26,8 @@ public enum ClipboardOverlayEvent implements UiEventLogger.UiEventEnum {
CLIPBOARD_OVERLAY_UPDATED(950),
@UiEvent(doc = "clipboard edit tapped")
CLIPBOARD_OVERLAY_EDIT_TAPPED(951),
+ @UiEvent(doc = "clipboard share tapped")
+ CLIPBOARD_OVERLAY_SHARE_TAPPED(RESERVE_NEW_UI_EVENT_ID),
@UiEvent(doc = "clipboard action tapped")
CLIPBOARD_OVERLAY_ACTION_TAPPED(952),
@UiEvent(doc = "clipboard remote copy tapped")