summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Miranda Kephart <mkephart@google.com> 2022-04-01 13:02:49 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-04-01 13:02:49 +0000
commite57ad24bbe04d544f10872f61deeea058364c90e (patch)
treea43801295d80f2a458897a7e426f6b4f72d9a625
parenta540ab52b28060d25823471b65a9aee346b2ca03 (diff)
parentdaa7263f1fb0d4e7c64196fd4c7e0d3265c13361 (diff)
Merge "Add ClipData to clipboard REMOTE_COPY intent" into tm-dev
-rw-r--r--packages/SystemUI/res/values/config.xml4
-rw-r--r--packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java40
2 files changed, 26 insertions, 18 deletions
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index d5331e8eae7e..f2ddf9e645b6 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -446,6 +446,10 @@
This name is in the ComponentName flattened format (package/class) -->
<string name="config_screenshotEditor" translatable="false"></string>
+ <!-- Remote copy default activity. Must handle REMOTE_COPY_ACTION intents.
+ This name is in the ComponentName flattened format (package/class) -->
+ <string name="config_remoteCopyPackage" translatable="false"></string>
+
<!-- On debuggable builds, alert the user if SystemUI PSS goes over this number (in kb) -->
<integer name="watch_heap_limit">256000</integer>
diff --git a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java
index 8fca295a48fd..29cdf99ed4e5 100644
--- a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java
+++ b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java
@@ -221,17 +221,6 @@ public class ClipboardOverlayController {
mRemoteCopyChip.setIcon(
Icon.createWithResource(mContext, R.drawable.ic_baseline_devices_24), true);
- // Only show remote copy if it's available.
- PackageManager packageManager = mContext.getPackageManager();
- if (packageManager.resolveActivity(getRemoteCopyIntent(), 0) != null) {
- mRemoteCopyChip.setOnClickListener((v) -> {
- showNearby();
- });
- mRemoteCopyChip.setAlpha(1f);
- } else {
- mRemoteCopyChip.setVisibility(View.GONE);
- }
-
attachWindow();
withWindowAttached(() -> {
mWindow.setContentView(mContainer);
@@ -294,6 +283,20 @@ public class ClipboardOverlayController {
showTextPreview(
mContext.getResources().getString(R.string.clipboard_overlay_text_copied));
}
+ Intent remoteCopyIntent = getRemoteCopyIntent(clipData);
+ // Only show remote copy if it's available.
+ PackageManager packageManager = mContext.getPackageManager();
+ if (remoteCopyIntent != null && packageManager.resolveActivity(
+ remoteCopyIntent, PackageManager.ResolveInfoFlags.of(0)) != null) {
+ mRemoteCopyChip.setOnClickListener((v) -> {
+ mUiEventLogger.log(CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED);
+ mContext.startActivity(remoteCopyIntent);
+ animateOut();
+ });
+ mRemoteCopyChip.setAlpha(1f);
+ } else {
+ mRemoteCopyChip.setVisibility(View.GONE);
+ }
mTimeoutHandler.resetTimeout();
}
@@ -397,12 +400,6 @@ public class ClipboardOverlayController {
animateOut();
}
- private void showNearby() {
- mUiEventLogger.log(CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED);
- mContext.startActivity(getRemoteCopyIntent());
- animateOut();
- }
-
private void showTextPreview(CharSequence text) {
mTextPreview.setVisibility(View.VISIBLE);
mImagePreview.setVisibility(View.GONE);
@@ -442,8 +439,15 @@ public class ClipboardOverlayController {
mImagePreview.setOnClickListener(listener);
}
- private Intent getRemoteCopyIntent() {
+ private Intent getRemoteCopyIntent(ClipData clipData) {
+ String remoteCopyPackage = mContext.getString(R.string.config_remoteCopyPackage);
+ if (TextUtils.isEmpty(remoteCopyPackage)) {
+ return null;
+ }
Intent nearbyIntent = new Intent(REMOTE_COPY_ACTION);
+ nearbyIntent.setComponent(ComponentName.unflattenFromString(remoteCopyPackage));
+ nearbyIntent.setClipData(clipData);
+ nearbyIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
nearbyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
return nearbyIntent;
}