diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/BaseActivity.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/BaseActivity.kt new file mode 100644 index 000000000..d333a3ecc --- /dev/null +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/BaseActivity.kt @@ -0,0 +1,16 @@ +package org.ryujinx.android + +import android.os.Bundle +import android.os.PersistableBundle +import androidx.activity.ComponentActivity + +abstract class BaseActivity : ComponentActivity() { + companion object{ + val crashHandler = CrashHandler() + } + + override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { + Thread.setDefaultUncaughtExceptionHandler(crashHandler) + super.onCreate(savedInstanceState, persistentState) + } +} diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/CrashHandler.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/CrashHandler.kt new file mode 100644 index 000000000..2d6503020 --- /dev/null +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/CrashHandler.kt @@ -0,0 +1,13 @@ +package org.ryujinx.android + +import java.io.File +import java.lang.Thread.UncaughtExceptionHandler + +class CrashHandler : UncaughtExceptionHandler { + var crashLog : String = "" + override fun uncaughtException(t: Thread, e: Throwable) { + crashLog += e.toString() + "\n" + + File(MainActivity.AppPath + "${File.separator}crash.log").writeText(crashLog) + } +} diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/GameActivity.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/GameActivity.kt index 37113912f..8dc39bfeb 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/GameActivity.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/GameActivity.kt @@ -6,7 +6,6 @@ import android.content.pm.ActivityInfo import android.os.Bundle import android.view.KeyEvent import android.view.MotionEvent -import androidx.activity.ComponentActivity import androidx.activity.compose.BackHandler import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Arrangement @@ -51,7 +50,7 @@ import org.ryujinx.android.viewmodels.QuickSettings import kotlin.math.abs import kotlin.math.roundToInt -class GameActivity : ComponentActivity() { +class GameActivity : BaseActivity() { private var physicalControllerManager: PhysicalControllerManager = PhysicalControllerManager(this) diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/MainActivity.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/MainActivity.kt index 5f3b95481..29fa53dbf 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/MainActivity.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/MainActivity.kt @@ -4,7 +4,6 @@ import android.os.Build import android.os.Bundle import android.os.Environment import android.view.WindowManager -import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme @@ -17,7 +16,7 @@ import org.ryujinx.android.viewmodels.MainViewModel import org.ryujinx.android.views.MainView -class MainActivity : ComponentActivity() { +class MainActivity : BaseActivity() { private var _isInit: Boolean = false var storageHelper: SimpleStorageHelper? = null companion object {