我正在尝试将媒体项目公开给其他可以通过我的MediaBrowserServiceCompat
服务浏览我的应用程序内容的媒体应用程序。在我的onLoadChildren
方法中,我正在构建 MediaBrowserCompat.MediaItem
一个MediaDescriptionCompat
包含一个Bundle
我需要播放该项目的额外内容的 a。
public class Service extends MediaBrowserServiceCompat {
...
@Override
public void onLoadChildren(@NonNull String parentId, @NonNull Result<List<MediaBrowserCompat.MediaItem>> result) {
val bundle = Bundle().apply {
putString("extra", "some value")
}
MediaDescriptionCompat description = new MediaDescriptionCompat.Builder()
.setMediaId(mediaId)
.setExtras(bundle)
.setTitle("title")
.setSubtitle("subtitle")
.setIconUri(uri)
.build();
MediaBrowserCompat.MediaItem item = new MediaBrowserCompat.MediaItem(description, MediaBrowserCompat.MediaItem.FLAG_PLAYABLE);
val items = ArrayList<MediaBrowserCompat.MediaItem>()
items.add(item)
result.sendResult(items)
}
因此,在onPlayFromMediaId(String mediaId, Bundle extras)
用户单击该项目时我得到的回调中,我得到了正确mediaId
的结果,但它extras
是一个空包。
private class MediaSessionCallback extends MediaSessionCompat.Callback {
...
@Override
public void onPlayFromMediaId(String mediaId, Bundle extras) {
super.onPlayFromMediaId(mediaId, extras);
//here extras is empty
}
我确信 MediaItem 在Result<List<MediaBrowserCompat.MediaItem>>
结果中发送时具有附加包,onLoadChildren
但我不确定为什么它被返回为空。什么会导致这样的问题?
谢谢!