Saving log using logcat (#1487)

Old logger will be removed later, see discussion in PR
This commit is contained in:
Eran Leshem 2025-04-25 18:19:58 +03:00 committed by GitHub
parent e60efba59d
commit 01c0cd9de2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -31,16 +31,17 @@ import helium314.keyboard.latin.utils.Log
import helium314.keyboard.latin.utils.SpannableStringUtils import helium314.keyboard.latin.utils.SpannableStringUtils
import helium314.keyboard.latin.utils.getActivity import helium314.keyboard.latin.utils.getActivity
import helium314.keyboard.latin.utils.prefs import helium314.keyboard.latin.utils.prefs
import helium314.keyboard.settings.SearchSettingsScreen
import helium314.keyboard.settings.Setting
import helium314.keyboard.settings.SettingsActivity
import helium314.keyboard.settings.SettingsContainer import helium314.keyboard.settings.SettingsContainer
import helium314.keyboard.settings.SettingsWithoutKey import helium314.keyboard.settings.SettingsWithoutKey
import helium314.keyboard.settings.Setting
import helium314.keyboard.settings.preferences.Preference
import helium314.keyboard.settings.SearchSettingsScreen
import helium314.keyboard.settings.SettingsActivity
import helium314.keyboard.settings.Theme import helium314.keyboard.settings.Theme
import helium314.keyboard.settings.preferences.Preference
import helium314.keyboard.settings.previewDark import helium314.keyboard.settings.previewDark
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.io.OutputStream
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Calendar import java.util.Calendar
@ -54,7 +55,7 @@ fun AboutScreen(
SettingsWithoutKey.LICENSE, SettingsWithoutKey.LICENSE,
SettingsWithoutKey.HIDDEN_FEATURES, SettingsWithoutKey.HIDDEN_FEATURES,
SettingsWithoutKey.GITHUB, SettingsWithoutKey.GITHUB,
SettingsWithoutKey.SAVE_LOG SettingsWithoutKey.SAVE_LOG,
) )
SearchSettingsScreen( SearchSettingsScreen(
onClickBack = onClickBack, onClickBack = onClickBack,
@ -142,16 +143,24 @@ fun createAboutSettings(context: Context) = listOf(
icon = R.drawable.ic_settings_about_github icon = R.drawable.ic_settings_about_github
) )
}, },
Setting(context, SettingsWithoutKey.SAVE_LOG, R.string.save_log) { setting -> saveLog(context, SettingsWithoutKey.SAVE_LOG, R.string.save_log) {
val inputStream = Runtime.getRuntime().exec("logcat -d -b all").inputStream
inputStream.copyTo(it)
inputStream.close()
}
)
private fun saveLog(context: Context, key: String, titleId: Int, writer: (OutputStream) -> Unit) =
Setting(context, key, titleId) { setting ->
val ctx = LocalContext.current val ctx = LocalContext.current
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
val launcher = rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> val launcher = rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode != Activity.RESULT_OK) return@rememberLauncherForActivityResult if (result.resultCode != Activity.RESULT_OK) return@rememberLauncherForActivityResult
val uri = result.data?.data ?: return@rememberLauncherForActivityResult val uri = result.data?.data ?: return@rememberLauncherForActivityResult
scope.launch(Dispatchers.IO) { scope.launch(Dispatchers.IO) {
ctx.getActivity()?.contentResolver?.openOutputStream(uri)?.use { os -> val outputStream = ctx.getActivity()?.contentResolver?.openOutputStream(uri)
os.bufferedWriter().use { it.write(Log.getLog().joinToString("\n")) } outputStream?.use(writer)
} outputStream?.close()
} }
} }
Preference( Preference(
@ -171,8 +180,7 @@ fun createAboutSettings(context: Context) = listOf(
}, },
icon = R.drawable.ic_settings_about_log icon = R.drawable.ic_settings_about_log
) )
}, }
)
@Preview @Preview
@Composable @Composable