From bec69ef42b4be53a69b83ac9af86b095d479dd23 Mon Sep 17 00:00:00 2001 From: Oasis Feng Date: Mon, 31 Aug 2020 02:53:45 +0000 Subject: 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 Change-Id: Id33c4956097300c5ec1c6c50ebee91dee9a49c33 --- .../com/android/server/companion/CompanionDeviceManagerService.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java index 067becbf0c52..a4347333685b 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -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); } -- cgit v1.2.3-59-g8ed1b