diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 17 | ||||
| -rw-r--r-- | services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java | 5 |
2 files changed, 13 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index a992765c0411..2eeb782ff420 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -18201,16 +18201,17 @@ public class ActivityManagerService extends IActivityManager.Stub @Override public boolean hasRunningForegroundService(int uid, int foregroundServicetype) { synchronized (ActivityManagerService.this) { - return mProcessList.searchEachLruProcessesLOSP(true, app -> { - if (app.uid != uid) { - return null; - } - + final UidRecord uidRec = mProcessList.mActiveUids.get(uid); + if (uidRec == null) { + return false; + } + for (int i = uidRec.getNumOfProcs() - 1; i >= 0; i--) { + final ProcessRecord app = uidRec.getProcessRecordByIndex(i); if ((app.mServices.containsAnyForegroundServiceTypes(foregroundServicetype))) { - return Boolean.TRUE; + return true; } - return null; - }) != null; + } + return false; } } diff --git a/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java b/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java index 377b8cf1230e..d89a6f8f9828 100644 --- a/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java +++ b/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java @@ -232,7 +232,10 @@ public final class MediaProjectionManagerService extends SystemService return; } - if ((serviceTypes & ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION) != 0) { + if (mActivityManagerInternal.hasRunningForegroundService( + uid, ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION)) { + // If there is any process within this UID running a FGS + // with the mediaProjection type, that's Okay. return; } |