diff options
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.kt | 32 |
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 | |||
9 | import android.support.v7.app.AlertDialog | 9 | import android.support.v7.app.AlertDialog |
10 | import android.view.WindowManager | 10 | import android.view.WindowManager |
11 | import org.pacien.tincapp.R | 11 | import org.pacien.tincapp.R |
12 | import org.slf4j.Logger | ||
13 | import org.slf4j.LoggerFactory | 12 | import org.slf4j.LoggerFactory |
13 | import java.io.File | ||
14 | 14 | ||
15 | /** | 15 | /** |
16 | * @author pacien | 16 | * @author pacien |
17 | */ | 17 | */ |
18 | class App : Application(), Thread.UncaughtExceptionHandler { | 18 | class 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 | } |