diff --git a/app/src/main/java/de/kuschku/quasseldroid/app/QuasseldroidReleaseDelegate.kt b/app/src/main/java/de/kuschku/quasseldroid/app/QuasseldroidReleaseDelegate.kt index 7a43a5ba9731d399ac955bf502331412a8a78956..5aea5d0f7c260d5a3d8fc341ab0e4fe578240c8f 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/app/QuasseldroidReleaseDelegate.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/app/QuasseldroidReleaseDelegate.kt @@ -47,10 +47,7 @@ class QuasseldroidReleaseDelegate(private val app: Quasseldroid) : LeakCanary.install(app) // Normal app init code... - CrashHandler.init( - application = app, - buildConfig = BuildConfig::class.java - ) + CrashHandler.init<BuildConfig>(application = app) // Init compatibility utils AndroidCompatibilityUtils.inject() diff --git a/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt b/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt index b78431d9c6e766f0570462758b567510f71b6e62..5f68831167d29c86eacedc0bbfd52666048b344e 100644 --- a/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt +++ b/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt @@ -39,6 +39,10 @@ object CrashHandler { private lateinit var handler: Handler + inline fun <reified T> init(application: Application, config: ReportConfig = ReportConfig()) { + init(application, config, T::class.java) + } + fun init(application: Application, config: ReportConfig = ReportConfig(), buildConfig: Class<*>?) { if (myHandler == null) { @@ -92,10 +96,17 @@ object CrashHandler { } }.start() } + Thread.setDefaultUncaughtExceptionHandler { currentThread, throwable -> myHandler?.uncaughtException(currentThread, throwable) originalHandler?.uncaughtException(currentThread, throwable) } + + val oldHandler = Thread.currentThread().uncaughtExceptionHandler + Thread.currentThread().setUncaughtExceptionHandler { currentThread, throwable -> + myHandler?.uncaughtException(currentThread, throwable) + oldHandler?.uncaughtException(currentThread, throwable) + } } fun handle(throwable: Throwable) { diff --git a/malheur/src/main/java/de/kuschku/malheur/collectors/AppCollector.kt b/malheur/src/main/java/de/kuschku/malheur/collectors/AppCollector.kt index 1afa49239ba8dca63a3bf8b765c15ac3c63cbc8c..42bd4cf6253ad317028e4ec18c995c9da2b4c402 100644 --- a/malheur/src/main/java/de/kuschku/malheur/collectors/AppCollector.kt +++ b/malheur/src/main/java/de/kuschku/malheur/collectors/AppCollector.kt @@ -20,6 +20,7 @@ package de.kuschku.malheur.collectors import android.app.Application +import android.os.Build import de.kuschku.malheur.CrashContext import de.kuschku.malheur.config.AppConfig import de.kuschku.malheur.data.AppInfo @@ -31,7 +32,12 @@ class AppCollector(private val application: Application) : Collector<AppInfo, Ap application.packageManager.getPackageInfo(application.packageName, 0).versionName }, versionCode = collectIf(config.versionCode) { - application.packageManager.getPackageInfo(application.packageName, 0).versionCode + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + application.packageManager.getPackageInfo(application.packageName, 0).longVersionCode + } else { + @Suppress("DEPRECATION") + application.packageManager.getPackageInfo(application.packageName, 0).versionCode.toLong() + } }, buildConfig = collectIf(config.buildConfig) { reflectionCollectConstants( diff --git a/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt b/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt index 607baea2f34203c49252f16390e1ff2ad3f14825..212e74abfb3c46dcc22f6ab73c295874591b7d2d 100644 --- a/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt +++ b/malheur/src/main/java/de/kuschku/malheur/collectors/DisplayCollector.kt @@ -21,6 +21,7 @@ package de.kuschku.malheur.collectors import android.app.Application import android.content.Context +import android.graphics.Point import android.os.Build import android.util.SparseArray import android.view.Display @@ -37,7 +38,6 @@ class DisplayCollector(application: Application) : Context.WINDOW_SERVICE ) as WindowManager - @Suppress("DEPRECATION") override fun collect(context: CrashContext, config: Boolean): DisplayInfo? { val display = windowManager.defaultDisplay val hdrCapabilities = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { @@ -46,10 +46,18 @@ class DisplayCollector(application: Application) : } else { null } + + val size = Point().also { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + display.getRealSize(it) + } else { + display.getSize(it) + } + } + return DisplayInfo( - width = display.width, - height = display.height, - pixelFormat = display.pixelFormat, + width = size.x, + height = size.y, refreshRate = display.refreshRate, hdr = hdrCapabilities, isWideGamut = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { diff --git a/malheur/src/main/java/de/kuschku/malheur/data/AppInfo.kt b/malheur/src/main/java/de/kuschku/malheur/data/AppInfo.kt index dde3621860e8df7f7dbb704774eefad32d6d246a..c06791382bd98ad9fa5c60a6bec7b6144c045b53 100644 --- a/malheur/src/main/java/de/kuschku/malheur/data/AppInfo.kt +++ b/malheur/src/main/java/de/kuschku/malheur/data/AppInfo.kt @@ -21,6 +21,6 @@ package de.kuschku.malheur.data data class AppInfo( val versionName: String?, - val versionCode: Int?, + val versionCode: Long?, val buildConfig: Map<String, Any?>? ) diff --git a/malheur/src/main/java/de/kuschku/malheur/data/DisplayInfo.kt b/malheur/src/main/java/de/kuschku/malheur/data/DisplayInfo.kt index c816bed5c6f7018be088ccd19f21f490c66f3fb6..7e2a91491d03d80c021b99fed2ce813ed0021146 100644 --- a/malheur/src/main/java/de/kuschku/malheur/data/DisplayInfo.kt +++ b/malheur/src/main/java/de/kuschku/malheur/data/DisplayInfo.kt @@ -22,7 +22,6 @@ package de.kuschku.malheur.data data class DisplayInfo( val width: Int, val height: Int, - val pixelFormat: Int, val refreshRate: Float, val hdr: List<String>?, val isWideGamut: Boolean?,