From ebf3c0577f29dee11db3efab8e753c2feced6323 Mon Sep 17 00:00:00 2001 From: arangelov Date: Tue, 17 Mar 2020 13:11:37 +0000 Subject: [PATCH] Open app details for the correct user depending on the profile. Fixes: 149732838 Test: manual Change-Id: I477a3af794f98aa91ad6c3164338339be0858cb3 --- .../com/android/internal/app/ChooserActivity.java | 6 ++++-- .../com/android/internal/app/ResolverActivity.java | 2 +- .../app/ResolverTargetActionsDialogFragment.java | 11 ++++++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index c487e960854bd..8429e8a861606 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -1525,10 +1525,12 @@ public class ChooserActivity extends ResolverActivity implements labels.add(innerInfo.getResolveInfo().loadLabel(getPackageManager())); } f = new ResolverTargetActionsDialogFragment(mti.getDisplayLabel(), name, - mti.getTargets(), labels); + mti.getTargets(), labels, + mChooserMultiProfilePagerAdapter.getCurrentUserHandle()); } else { f = new ResolverTargetActionsDialogFragment( - ti.getResolveInfo().loadLabel(getPackageManager()), name, pinned); + ti.getResolveInfo().loadLabel(getPackageManager()), name, pinned, + mChooserMultiProfilePagerAdapter.getCurrentUserHandle()); } f.show(getFragmentManager(), TARGET_DETAILS_FRAGMENT_TAG); diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index ec371d9a73118..41d2a7ab8dbe8 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -1303,7 +1303,7 @@ public class ResolverActivity extends Activity implements Intent in = new Intent().setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) .setData(Uri.fromParts("package", ri.activityInfo.packageName, null)) .addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); - startActivity(in); + startActivityAsUser(in, mMultiProfilePagerAdapter.getCurrentUserHandle()); } @VisibleForTesting diff --git a/core/java/com/android/internal/app/ResolverTargetActionsDialogFragment.java b/core/java/com/android/internal/app/ResolverTargetActionsDialogFragment.java index 21efc78bddf80..35d9bcdbb033d 100644 --- a/core/java/com/android/internal/app/ResolverTargetActionsDialogFragment.java +++ b/core/java/com/android/internal/app/ResolverTargetActionsDialogFragment.java @@ -27,6 +27,7 @@ import android.content.SharedPreferences; import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; +import android.os.UserHandle; import android.provider.Settings; import com.android.internal.R; @@ -43,6 +44,7 @@ public class ResolverTargetActionsDialogFragment extends DialogFragment private static final String NAME_KEY = "componentName"; private static final String TITLE_KEY = "title"; private static final String PINNED_KEY = "pinned"; + private static final String USER_ID_KEY = "userId"; // Sync with R.array.resolver_target_actions_* resources private static final int TOGGLE_PIN_INDEX = 0; @@ -56,19 +58,21 @@ public class ResolverTargetActionsDialogFragment extends DialogFragment } public ResolverTargetActionsDialogFragment(CharSequence title, ComponentName name, - boolean pinned) { + boolean pinned, UserHandle userHandle) { Bundle args = new Bundle(); args.putCharSequence(TITLE_KEY, title); args.putParcelable(NAME_KEY, name); args.putBoolean(PINNED_KEY, pinned); + args.putParcelable(USER_ID_KEY, userHandle); setArguments(args); } public ResolverTargetActionsDialogFragment(CharSequence title, ComponentName name, - List targets, List labels) { + List targets, List labels, UserHandle userHandle) { Bundle args = new Bundle(); args.putCharSequence(TITLE_KEY, title); args.putParcelable(NAME_KEY, name); + args.putParcelable(USER_ID_KEY, userHandle); mTargetInfos = targets; mLabels = labels; setArguments(args); @@ -122,7 +126,8 @@ public class ResolverTargetActionsDialogFragment extends DialogFragment Intent in = new Intent().setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) .setData(Uri.fromParts("package", name.getPackageName(), null)) .addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); - startActivity(in); + UserHandle userHandle = args.getParcelable(USER_ID_KEY); + getActivity().startActivityAsUser(in, userHandle); } dismiss(); }