From 9a8a6744efbd7c162deb93eef719640b41fae2f7 Mon Sep 17 00:00:00 2001 From: arangelov Date: Mon, 1 Jun 2020 14:17:32 +0100 Subject: [PATCH] Only add user id to content uri if launching cross-profile target Test: manual Test: atest ResolverActivityTest Test: atest ChooserActivityTest Bug: 156552093 Change-Id: Icbdf0ea33f35785322eb6bfb23e88dfdacf7fd34 --- .../com/android/internal/app/ChooserActivity.java | 4 ++++ .../com/android/internal/app/ResolverActivity.java | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index 9950e55f1415d..d49abcfb72a31 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -3024,6 +3024,10 @@ public class ChooserActivity extends ResolverActivity implements currentRootAdapter.updateDirectShareExpansion(); } + void prepareIntentForCrossProfileLaunch(Intent intent) { + intent.fixUris(UserHandle.myUserId()); + } + /** * Adapter for all types of items and targets in ShareSheet. * Note that ranked sections like Direct Share - while appearing grid-like - are handled on the diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 4b5735ce34edd..cbcf3b9e17b83 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -1246,8 +1246,8 @@ public class ResolverActivity extends Activity implements } if (target != null) { - if (intent != null) { - intent.fixUris(UserHandle.myUserId()); + if (intent != null && isLaunchingTargetInOtherProfile()) { + prepareIntentForCrossProfileLaunch(intent); } safelyStartActivity(target); @@ -1261,6 +1261,13 @@ public class ResolverActivity extends Activity implements return true; } + void prepareIntentForCrossProfileLaunch(Intent intent) {} + + private boolean isLaunchingTargetInOtherProfile() { + return mMultiProfilePagerAdapter.getCurrentUserHandle().getIdentifier() + != UserHandle.myUserId(); + } + @VisibleForTesting public void safelyStartActivity(TargetInfo cti) { // We're dispatching intents that might be coming from legacy apps, so