diff options
| author | 2016-06-23 15:58:09 +0900 | |
|---|---|---|
| committer | 2016-06-28 17:07:21 +0900 | |
| commit | efd92a34e29f0aa29c1f2d3bc910e038e85bf766 (patch) | |
| tree | c114ee53a82c414a95a9cc73b8b66521b6480608 | |
| parent | 90b2c781ff02986f7fe495370c16d67ccd614055 (diff) | |
MediaResourceMonitor: Send broadcast to current users
Multiple users can be running foreground if work profile is enabled,
so we need to send broadcast to all of them.
Bug: 29788027
Change-Id: I80b21c97cec857bebc5fd05f0c04ca134542b4d3
| -rw-r--r-- | services/core/java/com/android/server/media/MediaResourceMonitorService.java | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/media/MediaResourceMonitorService.java b/services/core/java/com/android/server/media/MediaResourceMonitorService.java index e169d638c442..0eb8b55e417a 100644 --- a/services/core/java/com/android/server/media/MediaResourceMonitorService.java +++ b/services/core/java/com/android/server/media/MediaResourceMonitorService.java @@ -24,6 +24,7 @@ import android.media.IMediaResourceMonitor; import android.os.Binder; import android.os.RemoteException; import android.os.UserHandle; +import android.os.UserManager; import android.util.Log; import android.util.Slog; import com.android.server.SystemService; @@ -59,12 +60,20 @@ public class MediaResourceMonitorService extends SystemService { final long identity = Binder.clearCallingIdentity(); try { String pkgNames[] = getPackageNamesFromPid(pid); - if (pkgNames != null) { - Intent intent = new Intent(Intent.ACTION_MEDIA_RESOURCE_GRANTED); - intent.putExtra(Intent.EXTRA_PACKAGES, pkgNames); - intent.putExtra(Intent.EXTRA_MEDIA_RESOURCE_TYPE, type); - getContext().sendBroadcastAsUser(intent, - new UserHandle(ActivityManager.getCurrentUser()), + if (pkgNames == null) { + return; + } + UserManager manager = (UserManager) getContext().getSystemService( + Context.USER_SERVICE); + int[] userIds = manager.getEnabledProfileIds(ActivityManager.getCurrentUser()); + if (userIds == null || userIds.length == 0) { + return; + } + Intent intent = new Intent(Intent.ACTION_MEDIA_RESOURCE_GRANTED); + intent.putExtra(Intent.EXTRA_PACKAGES, pkgNames); + intent.putExtra(Intent.EXTRA_MEDIA_RESOURCE_TYPE, type); + for (int userId : userIds) { + getContext().sendBroadcastAsUser(intent, UserHandle.of(userId), android.Manifest.permission.RECEIVE_MEDIA_RESOURCE_USAGE); } } finally { |