diff --git a/api/current.txt b/api/current.txt index d2f63fa81dcfe..0f4231d91bfb8 100644 --- a/api/current.txt +++ b/api/current.txt @@ -27245,7 +27245,7 @@ package android.media.session { method @Nullable public CharSequence getQueueTitle(); method public int getRatingType(); method @Nullable public android.app.PendingIntent getSessionActivity(); - method @Nullable public android.os.Bundle getSessionInfo(); + method @NonNull public android.os.Bundle getSessionInfo(); method @NonNull public android.media.session.MediaSession.Token getSessionToken(); method @NonNull public android.media.session.MediaController.TransportControls getTransportControls(); method public void registerCallback(@NonNull android.media.session.MediaController.Callback); diff --git a/media/java/android/media/session/MediaController.java b/media/java/android/media/session/MediaController.java index 79d8be1a04a42..3500475eeeda9 100644 --- a/media/java/android/media/session/MediaController.java +++ b/media/java/android/media/session/MediaController.java @@ -414,18 +414,25 @@ public final class MediaController { /** * Gets the additional session information which was set when the session was created. * - * @return The additional session information + * @return The additional session information, or {@link Bundle#EMPTY} if not set. */ - @Nullable + @NonNull public Bundle getSessionInfo() { - if (mSessionInfo == null) { - try { - mSessionInfo = mSessionBinder.getSessionInfo(); - } catch (RemoteException e) { - Log.d(TAG, "Dead object in getSessionInfo.", e); - } + if (mSessionInfo != null) { + return new Bundle(mSessionInfo); } - return mSessionInfo; + + // Get info from the connected session. + try { + mSessionInfo = mSessionBinder.getSessionInfo(); + } catch (RemoteException e) { + Log.d(TAG, "Dead object in getSessionInfo.", e); + } + + if (mSessionInfo == null) { + mSessionInfo = Bundle.EMPTY; + } + return new Bundle(mSessionInfo); } /**