diff --git a/app/src/main/java/helium314/keyboard/latin/App.kt b/app/src/main/java/helium314/keyboard/latin/App.kt index 47ee42fea..57d060f2e 100644 --- a/app/src/main/java/helium314/keyboard/latin/App.kt +++ b/app/src/main/java/helium314/keyboard/latin/App.kt @@ -45,8 +45,8 @@ import java.util.EnumMap class App : Application() { override fun onCreate() { super.onCreate() - Settings.init(this) DebugFlags.init(this) + Settings.init(this) SubtypeSettings.init(this) RichInputMethodManager.init(this) diff --git a/app/src/main/java/helium314/keyboard/latin/define/DebugFlags.kt b/app/src/main/java/helium314/keyboard/latin/define/DebugFlags.kt index 08f54c4f0..b8af61f47 100644 --- a/app/src/main/java/helium314/keyboard/latin/define/DebugFlags.kt +++ b/app/src/main/java/helium314/keyboard/latin/define/DebugFlags.kt @@ -28,8 +28,7 @@ object DebugFlags { fun init(context: Context) { DEBUG_ENABLED = context.prefs().getBoolean(DebugSettings.PREF_DEBUG_MODE, Defaults.PREF_DEBUG_MODE) - if (DEBUG_ENABLED || BuildConfig.DEBUG) - CrashReportExceptionHandler(context.applicationContext).install() + CrashReportExceptionHandler(context.applicationContext).install() } } diff --git a/app/src/main/java/helium314/keyboard/latin/utils/JniUtils.java b/app/src/main/java/helium314/keyboard/latin/utils/JniUtils.java index 9998d7e26..310ece153 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/JniUtils.java +++ b/app/src/main/java/helium314/keyboard/latin/utils/JniUtils.java @@ -52,10 +52,18 @@ public final class JniUtils { .getMethod("currentApplication").invoke(null, (Object[]) null); } catch (Exception ignored) { } } - if (app != null) // use the actual path if possible + if (app != null && app.getFilesDir() != null) // use the actual path if possible filesDir = app.getFilesDir().getAbsolutePath(); - final File userSuppliedLibrary = new File(filesDir + File.separator + JNI_LIB_IMPORT_FILE_NAME); - if (!BuildConfig.BUILD_TYPE.equals("nouserlib") && userSuppliedLibrary.exists()) { + + File userSuppliedLibrary; + try { + userSuppliedLibrary = new File(filesDir + File.separator + JNI_LIB_IMPORT_FILE_NAME); + if (!userSuppliedLibrary.isFile()) + userSuppliedLibrary = null; + } catch (Exception e) { + userSuppliedLibrary = null; + } + if (!BuildConfig.BUILD_TYPE.equals("nouserlib") && userSuppliedLibrary != null) { String wantedChecksum = expectedDefaultChecksum(); try { if (app != null) { diff --git a/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt b/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt index df7dfa861..19571b21c 100644 --- a/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt +++ b/app/src/main/java/helium314/keyboard/settings/SettingsActivity.kt @@ -76,8 +76,7 @@ class SettingsActivity : ComponentActivity(), SharedPreferences.OnSharedPreferen Settings.getInstance().loadSettings(this, resources.configuration.locale(), inputAttributes) } ExecutorUtils.getBackgroundExecutor(ExecutorUtils.KEYBOARD).execute { cleanUnusedMainDicts(this) } - if (BuildConfig.DEBUG || DebugFlags.DEBUG_ENABLED) - crashReportFiles.value = findCrashReports() + crashReportFiles.value = findCrashReports(!BuildConfig.DEBUG && !DebugFlags.DEBUG_ENABLED) val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager settingsContainer = SettingsContainer(this) @@ -191,16 +190,18 @@ class SettingsActivity : ComponentActivity(), SharedPreferences.OnSharedPreferen KeyboardSwitcher.getInstance().setThemeNeedsReload() } - private fun findCrashReports(): List { - // find crash report files + private fun findCrashReports(onlyUnprotected: Boolean): List { + val unprotected = DeviceProtectedUtils.getFilesDir(this)?.listFiles().orEmpty() + if (onlyUnprotected) + return unprotected.filter { it.name.startsWith("crash_report") } + val dir = getExternalFilesDir(null) - val unprotectedDir = DeviceProtectedUtils.getFilesDir(this) - val allFiles = dir?.listFiles()?.toList().orEmpty() + unprotectedDir?.listFiles().orEmpty() + val allFiles = dir?.listFiles()?.toList().orEmpty() + unprotected return allFiles.filter { it.name.startsWith("crash_report") } } private fun saveCrashReports(uri: Uri) { - val files = findCrashReports() + val files = findCrashReports(false) if (files.isEmpty()) return try { contentResolver.openOutputStream(uri)?.use {