aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org/pacien/tincapp/context/App.kt
diff options
context:
space:
mode:
authorpacien2018-03-31 16:56:35 +0200
committerpacien2018-03-31 16:56:35 +0200
commita5762d98a07ce30e8b3e1ac364e15e1c65029b75 (patch)
tree324096d5feffd396cef8660b3a1bcb53b16d7f15 /app/src/main/java/org/pacien/tincapp/context/App.kt
parent32a68afadec59da045118c6707cf4caec145502b (diff)
downloadtincapp-a5762d98a07ce30e8b3e1ac364e15e1c65029b75.tar.gz
Prompt for bug report
Diffstat (limited to 'app/src/main/java/org/pacien/tincapp/context/App.kt')
-rw-r--r--app/src/main/java/org/pacien/tincapp/context/App.kt32
1 files changed, 19 insertions, 13 deletions
diff --git a/app/src/main/java/org/pacien/tincapp/context/App.kt b/app/src/main/java/org/pacien/tincapp/context/App.kt
index 53049f3..7ec1a47 100644
--- a/app/src/main/java/org/pacien/tincapp/context/App.kt
+++ b/app/src/main/java/org/pacien/tincapp/context/App.kt
@@ -9,31 +9,26 @@ import android.support.annotation.StringRes
9import android.support.v7.app.AlertDialog 9import android.support.v7.app.AlertDialog
10import android.view.WindowManager 10import android.view.WindowManager
11import org.pacien.tincapp.R 11import org.pacien.tincapp.R
12import org.slf4j.Logger
13import org.slf4j.LoggerFactory 12import org.slf4j.LoggerFactory
13import java.io.File
14 14
15/** 15/**
16 * @author pacien 16 * @author pacien
17 */ 17 */
18class App : Application(), Thread.UncaughtExceptionHandler { 18class App : Application() {
19 private var logger: Logger? = null
20 private var systemCrashHandler: Thread.UncaughtExceptionHandler? = null
21
22 override fun onCreate() { 19 override fun onCreate() {
23 super.onCreate() 20 super.onCreate()
24 appContext = applicationContext 21 appContext = applicationContext
25 handler = Handler() 22 handler = Handler()
26
27 AppLogger.configure() 23 AppLogger.configure()
28 logger = LoggerFactory.getLogger(this.javaClass) 24 setupCrashHandler()
29
30 systemCrashHandler = Thread.getDefaultUncaughtExceptionHandler()
31 Thread.setDefaultUncaughtExceptionHandler(this)
32 } 25 }
33 26
34 override fun uncaughtException(thread: Thread, throwable: Throwable) { 27 private fun setupCrashHandler() {
35 logger?.error("Fatal application error.", throwable) 28 val logger = LoggerFactory.getLogger(this.javaClass)
36 systemCrashHandler?.uncaughtException(thread, throwable) 29 val systemCrashHandler = Thread.getDefaultUncaughtExceptionHandler()
30 val crashRecorder = CrashRecorder(logger, systemCrashHandler)
31 Thread.setDefaultUncaughtExceptionHandler(crashRecorder)
37 } 32 }
38 33
39 companion object { 34 companion object {
@@ -56,5 +51,16 @@ class App : Application(), Thread.UncaughtExceptionHandler {
56 val chooser = Intent.createChooser(intent, getResources().getString(R.string.action_open_web_page)) 51 val chooser = Intent.createChooser(intent, getResources().getString(R.string.action_open_web_page))
57 appContext?.startActivity(chooser.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)) 52 appContext?.startActivity(chooser.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
58 } 53 }
54
55 fun sendMail(recipient: String, subject: String, body: String? = null, attachment: File? = null) {
56 val intent = Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"))
57 .putExtra(Intent.EXTRA_EMAIL, arrayOf(recipient))
58 .putExtra(Intent.EXTRA_SUBJECT, subject)
59 .apply { if (body != null) putExtra(Intent.EXTRA_TEXT, body) }
60 .apply { if (attachment != null) putExtra(Intent.EXTRA_STREAM, Uri.fromFile(attachment)) }
61
62 val chooser = Intent.createChooser(intent, getResources().getString(R.string.action_send_email))
63 appContext?.startActivity(chooser.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
64 }
59 } 65 }
60} 66}