#android #android-notifications #android-notification.mediastyle
#Android #android-уведомления #android-notification.mediastyle
Вопрос:
Я видел похожие вопросы, MediaSessionCompat
но все они довольно старые, на самом деле большинство из них предшествуют AndroidX, и они указывают на то, что это исправлено в более новых версиях.
Этот сбой происходит androidx.media:media:1.2.1
на разных телефонах с Android 8 по 11. Это всегда MediaSessionImplApi21
. У меня отлично работает на каждом телефоне, который я пробовал.
Эта проблема является новой для меня с момента моего последнего выпуска. Два больших изменения, которые я внес, это то, что я добавил индикатор выполнения в свое MediaStyle
уведомление и что я обновил до 1.2.1
from 1.0.0
.
Это исключение:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v4.media.session.MediaSessionCompat$Callback android.support.v4.media.session.MediaSessionCompat$MediaSessionImplApi21.getCallback()' on a null object reference
at android.support.v4.media.session.MediaSessionCompat$Callback$MediaSessionCallbackApi21.getSessionImplIfCallbackIsSet(MediaSessionCompat.java:1907)
at android.support.v4.media.session.MediaSessionCompat$Callback$MediaSessionCallbackApi21.onMediaButtonEvent(MediaSessionCompat.java:1597)
at android.media.session.MediaSession$CallbackMessageHandler.handleMessage(MediaSession.java:1471)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7094)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
Если бы мой Callback
не был установлен, многие вещи не работали бы.
Также мой код выглядит так:
MediaSessionCompat mediaSessionCompat = new MediaSessionCompat(context, TAG);
mediaSessionCompat.setCallback(mediaSessionCallback);
Так что на самом деле нет места, чтобы не устанавливать Callback
.
Есть идеи, что это может быть?
От просмотра кода и места его сбоя:
private MediaSessionImplApi21 getSessionImplIfCallbackIsSet() {
MediaSessionImplApi21 sessionImpl;
synchronized (mLock) {
sessionImpl = (MediaSessionImplApi21) mSessionImpl.get();
}
return MediaSessionCompat.Callback.this == sessionImpl.getCallback()
? sessionImpl : null;
}
Происходит сбой sessionImpl.getCallback()
. Что, вероятно, означает, что он либо был переработан, потому mSessionImpl
что является a WeakReference
, либо для него изначально было установлено значение null.
Ответ №1:
Оказывается, это была ошибка, и теперь она исправлена и, надеюсь, выйдет на 1.2.2
https://issuetracker.google.com/issues/178694750