Skip to content
Snippets Groups Projects
Verified Commit beba0f48 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

CrashHandler improvements

parent 979e9b19
No related branches found
No related tags found
No related merge requests found
......@@ -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()
......
......@@ -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) {
......
......@@ -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(
......
......@@ -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) {
......
......@@ -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?>?
)
......@@ -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?,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment