В моем приложении Music Player я использовал комбинацию MediaController и MediaBrowser для воспроизведения музыки, подобной упомянутой ЗДЕСЬ , это работало нормально на всех устройствах, но после выпуска приложения у меня были сбои с 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)
, поэтому эта ошибка очевидна, потому что я передал значение null в конструкторе MediaControllerCompat
, который принимает только ненулевое значение, нотакже упоминается, что getSessionToken
не вернет ноль, но все еще не знает, почему он возвращает ноль только на версиях Android 5.0, 5.0.1 и 5.0.2