Avoid IME related crash in buggy devices

This commit is contained in:
Juha Heinanen
2026-04-26 07:48:23 +03:00
parent e6d3ada6dc
commit 6a86390593

View File

@ -1,15 +1,40 @@
package com.tutpro.baresip
import android.app.Application
import android.os.DeadObjectException
import android.util.Log
class BaresipApp : Application() {
override fun onCreate() {
super.onCreate()
val defaultHandler = Thread.getDefaultUncaughtExceptionHandler()
Thread.setDefaultUncaughtExceptionHandler { thread, throwable ->
if (isImeDeadObjectException(throwable)) {
Log.e(TAG, "Caught DeadObjectException from IME: $throwable")
} else {
defaultHandler?.uncaughtException(thread, throwable)
}
}
if (!BaresipService.libraryLoaded) {
Log.i(TAG, "Loading baresip library")
System.loadLibrary("baresip")
BaresipService.libraryLoaded = true
}
}
private fun isImeDeadObjectException(throwable: Throwable): Boolean {
var cause: Throwable? = throwable
while (cause != null) {
if (cause is DeadObjectException) {
if (cause.stackTrace.any { it.methodName == "updateCursorAnchorInfo" }) {
return true
}
}
cause = cause.cause
}
return false
}
}