diff options
3 files changed, 8 insertions, 4 deletions
diff --git a/media/java/android/media/session/ISessionManager.aidl b/media/java/android/media/session/ISessionManager.aidl index e073a4e2f6c8..a67a37eedd27 100644 --- a/media/java/android/media/session/ISessionManager.aidl +++ b/media/java/android/media/session/ISessionManager.aidl @@ -16,6 +16,7 @@ package android.media.session; import android.content.ComponentName; +import android.content.pm.ParceledListSlice; import android.media.IRemoteVolumeController; import android.media.Session2Token; import android.media.session.IActiveSessionsListener; @@ -38,7 +39,7 @@ interface ISessionManager { in Bundle sessionInfo, int userId); void notifySession2Created(in Session2Token sessionToken); List<MediaSession.Token> getSessions(in ComponentName compName, int userId); - List<Session2Token> getSession2Tokens(int userId); + ParceledListSlice getSession2Tokens(int userId); void dispatchMediaKeyEvent(String packageName, boolean asSystemService, in KeyEvent keyEvent, boolean needWakeLock); boolean dispatchMediaKeyEventToSessionAsSystemService(String packageName, diff --git a/media/java/android/media/session/MediaSessionManager.java b/media/java/android/media/session/MediaSessionManager.java index 51e3a4dc8c4b..569d11e1dce6 100644 --- a/media/java/android/media/session/MediaSessionManager.java +++ b/media/java/android/media/session/MediaSessionManager.java @@ -24,6 +24,7 @@ import android.annotation.SystemService; import android.annotation.UnsupportedAppUsage; import android.content.ComponentName; import android.content.Context; +import android.content.pm.ParceledListSlice; import android.media.AudioManager; import android.media.IRemoteVolumeController; import android.media.MediaSession2; @@ -218,7 +219,8 @@ public final class MediaSessionManager { @NonNull public List<Session2Token> getSession2Tokens(int userId) { try { - return mService.getSession2Tokens(userId); + ParceledListSlice slice = mService.getSession2Tokens(userId); + return slice == null ? new ArrayList<>() : slice.getList(); } catch (RemoteException e) { Log.e(TAG, "Failed to get session tokens", e); } diff --git a/services/core/java/com/android/server/media/MediaSessionServiceImpl.java b/services/core/java/com/android/server/media/MediaSessionServiceImpl.java index fdb499b5cd0e..aa886c27d7d8 100644 --- a/services/core/java/com/android/server/media/MediaSessionServiceImpl.java +++ b/services/core/java/com/android/server/media/MediaSessionServiceImpl.java @@ -33,6 +33,7 @@ import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; +import android.content.pm.ParceledListSlice; import android.content.pm.ServiceInfo; import android.content.pm.UserInfo; import android.database.ContentObserver; @@ -1072,7 +1073,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { } @Override - public List<Session2Token> getSession2Tokens(int userId) { + public ParceledListSlice getSession2Tokens(int userId) { final int pid = Binder.getCallingPid(); final int uid = Binder.getCallingUid(); final long token = Binder.clearCallingIdentity(); @@ -1087,7 +1088,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl { synchronized (mLock) { result = getSession2TokensLocked(resolvedUserId); } - return result; + return new ParceledListSlice(result); } finally { Binder.restoreCallingIdentity(token); } |