diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index f35f5dd0c3aed..2e6a58f7f5daa 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -301,6 +301,7 @@
+
diff --git a/packages/SystemUI/res/layout/clipboard_overlay.xml b/packages/SystemUI/res/layout/clipboard_overlay.xml
index 2a3761e4ca056..7e31909613ee8 100644
--- a/packages/SystemUI/res/layout/clipboard_overlay.xml
+++ b/packages/SystemUI/res/layout/clipboard_overlay.xml
@@ -17,6 +17,7 @@
@@ -50,7 +51,8 @@
+ android:layout_height="wrap_content"
+ android:animateLayoutChanges="true">
{
// Session is complete, free memory until it's needed again.
mClipboardOverlayController = null;
diff --git a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java
index b6bcb871ff183..12759f489a267 100644
--- a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java
+++ b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java
@@ -182,6 +182,7 @@ public class ClipboardOverlayController {
withWindowAttached(() -> {
mWindow.setContentView(mView);
updateInsets(mWindowManager.getCurrentWindowMetrics().getWindowInsets());
+ mView.requestLayout();
mView.post(this::animateIn);
});
@@ -213,7 +214,7 @@ public class ClipboardOverlayController {
mContext.sendBroadcast(new Intent(COPY_OVERLAY_ACTION), SELF_PERMISSION);
}
- void setClipData(ClipData clipData) {
+ void setClipData(ClipData clipData, String clipSource) {
reset();
if (clipData == null || clipData.getItemCount() == 0) {
showTextPreview(mContext.getResources().getString(
@@ -221,7 +222,7 @@ public class ClipboardOverlayController {
} else if (!TextUtils.isEmpty(clipData.getItemAt(0).getText())) {
ClipData.Item item = clipData.getItemAt(0);
if (item.getTextLinks() != null) {
- AsyncTask.execute(() -> classifyText(clipData.getItemAt(0)));
+ AsyncTask.execute(() -> classifyText(clipData.getItemAt(0), clipSource));
}
showEditableText(item.getText());
} else if (clipData.getItemAt(0).getUri() != null) {
@@ -238,7 +239,7 @@ public class ClipboardOverlayController {
mOnSessionCompleteListener = runnable;
}
- private void classifyText(ClipData.Item item) {
+ private void classifyText(ClipData.Item item, String source) {
ArrayList actions = new ArrayList<>();
for (TextLinks.TextLink link : item.getTextLinks().getLinks()) {
TextClassification classification = mTextClassifier.classifyText(
@@ -246,14 +247,14 @@ public class ClipboardOverlayController {
actions.addAll(classification.getActions());
}
mView.post(() -> {
- for (ScreenshotActionChip chip : mActionChips) {
- mActionContainer.removeView(chip);
- }
- mActionChips.clear();
+ resetActionChips();
for (RemoteAction action : actions) {
- ScreenshotActionChip chip = constructActionChip(action);
- mActionContainer.addView(chip);
- mActionChips.add(chip);
+ Intent targetIntent = action.getActionIntent().getIntent();
+ if (!TextUtils.equals(source, targetIntent.getComponent().getPackageName())) {
+ ScreenshotActionChip chip = constructActionChip(action);
+ mActionContainer.addView(chip);
+ mActionChips.add(chip);
+ }
}
});
}
@@ -451,13 +452,17 @@ public class ClipboardOverlayController {
}
}
- private void reset() {
- mView.setTranslationX(0);
- mView.setAlpha(0);
+ private void resetActionChips() {
for (ScreenshotActionChip chip : mActionChips) {
mActionContainer.removeView(chip);
}
mActionChips.clear();
+ }
+
+ private void reset() {
+ mView.setTranslationX(0);
+ mView.setAlpha(0);
+ resetActionChips();
mTimeoutHandler.cancelTimeout();
}