在我的音乐播放器应用程序中,我使用MediaController和MediaBrowser组合来播放HERE之类的音乐,在所有设备上都运行良好,但是在发布应用程序后,我从Android 5.0和5.0.1版崩溃了,并且同样是5.0.2,因为MediaBrowser.getSessionToken()
返回了null
sessionToken
,当我在getSessionToken()
方法中对MediaBrowserCompat
对象调用onConnected
时发生了崩溃。
inner class MediaBrowserConnectionCallback : MediaBrowserCompat.ConnectionCallback() {
override fun onConnected() {
mediaController.value = MediaControllerCompat(context, mediaBrowser.sessionToken)//HERE sessionToken is null on andorid os version 5
}
}
这是我要崩溃的
Fatal Exception: java.lang.IllegalArgumentException: sessionToken must not be null
at android.support.v4.media.session.MediaControllerCompat.<init> + 275(MediaControllerCompat.java:275)
at com.mypackagename.appname.screenmain.BrowseManager$MediaBrowserConnectionCallback.onConnected + 135(BrowseManager.kt:135)
at android.support.v4.media.MediaBrowserCompat$ConnectionCallback$StubApi21.onConnected + 669(MediaBrowserCompat.java:669)
at android.support.v4.media.MediaBrowserCompatApi21$ConnectionCallbackProxy.onConnected + 103(MediaBrowserCompatApi21.java:103)
at android.media.browse.MediaBrowser$2.run + 410(MediaBrowser.java:410)
所以这个错误是显而易见的,因为我在MediaControllerCompat
的构造函数中传递了null,该构造函数仅接受非null,但是还提到getSessionToken
不会返回null,但仍然不知道为什么仅在android v 5.0、5.0.1和5.0.2版本上返回null