فهرست منبع

avoid NPE for voice message playback

Exception java.lang.NullPointerException:
  at com.nextcloud.talk.controllers.ChatController.startPlayback (ChatController.kt:985)
  at com.nextcloud.talk.controllers.ChatController.access$startPlayback (ChatController.kt:219)
  at com.nextcloud.talk.controllers.ChatController$downloadFileToCache$1.invoke (ChatController.kt:1130)
  at com.nextcloud.talk.controllers.ChatController$downloadFileToCache$1.invoke (ChatController.kt:1128)
  at com.nextcloud.talk.controllers.ChatController.downloadFileToCache$lambda$19 (ChatController.kt:1128)
  at com.nextcloud.talk.controllers.ChatController.$r8$lambda$oLS0bGL_zLma74VfkfStO_mReb4
  at com.nextcloud.talk.controllers.ChatController$$ExternalSyntheticLambda10.onChanged
  at androidx.lifecycle.LiveData.considerNotify (LiveData.java:133)
  at androidx.lifecycle.LiveData.dispatchingValue (LiveData.java:151)
  at androidx.lifecycle.LiveData.setValue (LiveData.java:309)
  at androidx.lifecycle.MutableLiveData.setValue (MutableLiveData.java:50)
  at androidx.lifecycle.LiveData$1.run (LiveData.java:93)
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:226)
  at android.os.Looper.loop (Looper.java:313)
  at android.app.ActivityThread.main (ActivityThread.java:8775)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:571)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1067)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Marcel Hibbe 2 سال پیش
والد
کامیت
4932541de7
1فایلهای تغییر یافته به همراه19 افزوده شده و 17 حذف شده
  1. 19 17
      app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

+ 19 - 17
app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

@@ -975,25 +975,27 @@ class ChatController(args: Bundle) :
 
         initMediaPlayer(message)
 
-        if (!mediaPlayer!!.isPlaying) {
-            mediaPlayer!!.start()
-        }
-
-        mediaPlayerHandler = Handler()
-        activity?.runOnUiThread(object : Runnable {
-            override fun run() {
-                if (mediaPlayer != null) {
-                    val currentPosition: Int = mediaPlayer!!.currentPosition / VOICE_MESSAGE_SEEKBAR_BASE
-                    message.voiceMessagePlayedSeconds = currentPosition
-                    adapter?.update(message)
+        mediaPlayer?.let {
+            if (!it.isPlaying) {
+                it.start()
+            }
+
+            mediaPlayerHandler = Handler()
+            activity?.runOnUiThread(object : Runnable {
+                override fun run() {
+                    if (mediaPlayer != null) {
+                        val currentPosition: Int = mediaPlayer!!.currentPosition / VOICE_MESSAGE_SEEKBAR_BASE
+                        message.voiceMessagePlayedSeconds = currentPosition
+                        adapter?.update(message)
+                    }
+                    mediaPlayerHandler.postDelayed(this, SECOND)
                 }
-                mediaPlayerHandler.postDelayed(this, SECOND)
-            }
-        })
+            })
 
-        message.isDownloadingVoiceMessage = false
-        message.isPlayingVoiceMessage = true
-        adapter?.update(message)
+            message.isDownloadingVoiceMessage = false
+            message.isPlayingVoiceMessage = true
+            adapter?.update(message)
+        }
     }
 
     private fun pausePlayback(message: ChatMessage) {