diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 984ae218431cb..688c9ae705d7e 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -1570,10 +1570,16 @@ class ActivityStarter { mService.mUgmInternal.grantUriPermissionFromIntent(mCallingUid, mStartActivity.packageName, mIntent, mStartActivity.getUriPermissionsLocked(), mStartActivity.mUserId); - mService.getPackageManagerInternalLocked().grantImplicitAccess( - mStartActivity.mUserId, mIntent, - UserHandle.getAppId(mStartActivity.info.applicationInfo.uid), mCallingUid, - true /*direct*/); + if (mStartActivity.resultTo != null && mStartActivity.resultTo.info != null) { + // we need to resolve resultTo to a uid as grantImplicitAccess deals explicitly in UIDs + final PackageManagerInternal pmInternal = + mService.getPackageManagerInternalLocked(); + final int resultToUid = pmInternal.getPackageUidInternal( + mStartActivity.resultTo.info.packageName, 0, mStartActivity.mUserId); + pmInternal.grantImplicitAccess(mStartActivity.mUserId, mIntent, + UserHandle.getAppId(mStartActivity.info.applicationInfo.uid) /*recipient*/, + resultToUid /*visible*/, true /*direct*/); + } if (newTask) { EventLogTags.writeWmCreateTask(mStartActivity.mUserId, mStartActivity.getTask().mTaskId);