From 72952d940d60cce090a53fb710c38d08c881dcd4 Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Wed, 17 Jan 2024 23:02:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E8=AE=B0=E5=BD=95cr?= =?UTF-8?q?ash=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/idormy/sms/forwarder/App.kt | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/idormy/sms/forwarder/App.kt b/app/src/main/java/com/idormy/sms/forwarder/App.kt index 7f3483ea..e729ca9d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/App.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/App.kt @@ -41,7 +41,10 @@ import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import kotlinx.coroutines.* +import java.io.BufferedWriter import java.io.File +import java.io.FileWriter +import java.io.IOException import java.text.SimpleDateFormat import java.util.* import java.util.concurrent.TimeUnit @@ -100,11 +103,28 @@ class App : Application(), CactusCallback, Configuration.Provider by Core { override fun onCreate() { super.onCreate() - Thread.setDefaultUncaughtExceptionHandler { _, e -> - isDebug = true - e.printStackTrace() - Log.e(TAG, "onCreate: $e") + + // 设置全局异常捕获 + val defaultHandler = Thread.getDefaultUncaughtExceptionHandler() + Thread.setDefaultUncaughtExceptionHandler { thread, throwable -> + throwable.printStackTrace() + try { + val logPath = this.cacheDir.absolutePath + "/logs" + val logDir = File(logPath) + if (!logDir.exists()) logDir.mkdirs() + val dateFormat = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()) + val currentDateTime = dateFormat.format(Date()) + val logFile = File(logPath, "crash_$currentDateTime.txt") + BufferedWriter(FileWriter(logFile, true)).use { writer -> + writer.append("$throwable\n") + } + } catch (ex: IOException) { + ex.printStackTrace() + } + //使用默认的处理方式让APP停止运行 + defaultHandler?.uncaughtException(thread, throwable) } + try { context = applicationContext initLibs()