diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java index f93c663c551c1..ffcc197f546e7 100644 --- a/services/core/java/com/android/server/pm/LauncherAppsService.java +++ b/services/core/java/com/android/server/pm/LauncherAppsService.java @@ -16,7 +16,6 @@ package com.android.server.pm; -import android.Manifest.permission; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; @@ -307,8 +306,8 @@ public class LauncherAppsService extends SystemService { final int callingUserId = injectCallingUserId(); if (targetUserId == callingUserId) return true; - if (mContext.checkCallingOrSelfPermission(permission.INTERACT_ACROSS_USERS_FULL) - == PackageManager.PERMISSION_GRANTED) { + if (injectHasInteractAcrossUsersFullPermission(injectBinderCallingPid(), + injectBinderCallingUid())) { return true; } @@ -684,6 +683,15 @@ public class LauncherAppsService extends SystemService { callingPid, callingUid) == PackageManager.PERMISSION_GRANTED; } + /** + * Returns true if the caller has the "INTERACT_ACROSS_USERS_FULL" permission. + */ + @VisibleForTesting + boolean injectHasInteractAcrossUsersFullPermission(int callingPid, int callingUid) { + return mContext.checkPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, + callingPid, callingUid) == PackageManager.PERMISSION_GRANTED; + } + @Override public ParceledListSlice getShortcuts(String callingPackage, long changedSince, String packageName, List shortcutIds, List locusIds, diff --git a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java index df2b3efeb94c9..6c769485f6ada 100644 --- a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java @@ -562,6 +562,11 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase { boolean injectHasAccessShortcutsPermission(int callingPid, int callingUid) { return true; } + + @Override + boolean injectHasInteractAcrossUsersFullPermission(int callingPid, int callingUid) { + return false; + } } protected class LauncherAppsTestable extends LauncherApps {