Fix CDM.requestNotificationAccess() in profile.

If invoked by app running in managed profile, CompanionDeviceManager
.requestNotificationAccess() is actually trying to grant access to that
app in parent profile, which may not even exist.

Notification listener may not need to be running in managed profile,
but in order to access and control media sessions in managed profile,
notification listener must be granted access in that managed profile.

Test: Run test cases of CompanionDeviceManager in managed profile.

Signed-off-by: Oasis Feng <oasisfeng@gmail.com>
Change-Id: Id33c4956097300c5ec1c6c50ebee91dee9a49c33
This commit is contained in:
Oasis Feng
2020-08-31 02:53:45 +00:00
committed by Oasis Feng
parent 72eda1bb48
commit bec69ef42b

View File

@@ -316,12 +316,14 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
.toString());
long identity = Binder.clearCallingIdentity();
try {
return PendingIntent.getActivity(getContext(),
return PendingIntent.getActivityAsUser(getContext(),
0 /* request code */,
NotificationAccessConfirmationActivityContract.launcherIntent(
userId, component, packageTitle),
PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_ONE_SHOT
| PendingIntent.FLAG_CANCEL_CURRENT);
| PendingIntent.FLAG_CANCEL_CURRENT,
null /* options */,
new UserHandle(userId));
} finally {
Binder.restoreCallingIdentity(identity);
}