Merge "Fix sharing to another profile where an app has multiple targets" into tm-qpr-dev

This commit is contained in:
Liahav Eitan
2022-08-25 09:59:52 +00:00
committed by Android (Google) Code Review
2 changed files with 9 additions and 15 deletions

View File

@@ -1283,9 +1283,6 @@ public class ResolverActivity extends Activity implements
}
if (target != null) {
if (intent != null && isLaunchingTargetInOtherProfile()) {
prepareIntentForCrossProfileLaunch(intent);
}
safelyStartActivity(target);
// Rely on the ActivityManager to pop up a dialog regarding app suspension
@@ -1298,15 +1295,6 @@ public class ResolverActivity extends Activity implements
return true;
}
private void prepareIntentForCrossProfileLaunch(Intent intent) {
intent.fixUris(UserHandle.myUserId());
}
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
@@ -1513,9 +1501,6 @@ public class ResolverActivity extends Activity implements
findViewById(R.id.button_open).setOnClickListener(v -> {
Intent intent = otherProfileResolveInfo.getResolvedIntent();
if (intent != null) {
prepareIntentForCrossProfileLaunch(intent);
}
safelyStartActivityAsUser(otherProfileResolveInfo,
inactiveAdapter.mResolverListController.getUserHandle());
finish();

View File

@@ -172,12 +172,14 @@ public class DisplayResolveInfo implements TargetInfo, Parcelable {
@Override
public boolean startAsCaller(ResolverActivity activity, Bundle options, int userId) {
prepareIntentForCrossProfileLaunch(mResolvedIntent, userId);
activity.startActivityAsCaller(mResolvedIntent, options, false, userId);
return true;
}
@Override
public boolean startAsUser(Activity activity, Bundle options, UserHandle user) {
prepareIntentForCrossProfileLaunch(mResolvedIntent, user.getIdentifier());
activity.startActivityAsUser(mResolvedIntent, options, user);
return false;
}
@@ -222,6 +224,13 @@ public class DisplayResolveInfo implements TargetInfo, Parcelable {
}
};
private static void prepareIntentForCrossProfileLaunch(Intent intent, int targetUserId) {
final int currentUserId = UserHandle.myUserId();
if (targetUserId != currentUserId) {
intent.fixUris(currentUserId);
}
}
private DisplayResolveInfo(Parcel in) {
mDisplayLabel = in.readCharSequence();
mExtendedInfo = in.readCharSequence();