diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt index 9a2a855..ba15e37 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt @@ -8,6 +8,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import im.angry.openeuicc.common.R +import im.angry.openeuicc.util.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -44,16 +45,7 @@ class LogsActivity : AppCompatActivity() { private suspend fun reload() = withContext(Dispatchers.Main) { swipeRefresh.isRefreshing = true - val logStr = withContext(Dispatchers.IO) { - try { - Runtime.getRuntime().exec("logcat -t 1024").inputStream.readBytes() - .decodeToString() - } catch (_: Exception) { - "" - } - } - - logText.text = logStr + logText.text = intent.extras?.getString("log") ?: readSelfLog() swipeRefresh.isRefreshing = false diff --git a/app-common/src/main/java/im/angry/openeuicc/util/Utils.kt b/app-common/src/main/java/im/angry/openeuicc/util/Utils.kt index b2690b0..dc90ab1 100644 --- a/app-common/src/main/java/im/angry/openeuicc/util/Utils.kt +++ b/app-common/src/main/java/im/angry/openeuicc/util/Utils.kt @@ -8,9 +8,11 @@ import androidx.fragment.app.Fragment import im.angry.openeuicc.OpenEuiccApplication import im.angry.openeuicc.core.EuiccChannel import im.angry.openeuicc.core.EuiccChannelManager +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runBlocking import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext import net.typeblog.lpac_jni.LocalProfileInfo import java.lang.RuntimeException import kotlin.coroutines.resume @@ -26,6 +28,15 @@ val Context.selfAppVersion: String throw RuntimeException(e) } +suspend fun readSelfLog(lines: Int = 2048): String = withContext(Dispatchers.IO) { + try { + Runtime.getRuntime().exec("logcat -t $lines").inputStream.readBytes() + .decodeToString() + } catch (_: Exception) { + "" + } +} + interface OpenEuiccContextMarker { val openEuiccMarkerContext: Context get() = when (this) { diff --git a/app-unpriv/src/main/AndroidManifest.xml b/app-unpriv/src/main/AndroidManifest.xml index bce6831..e72b112 100644 --- a/app-unpriv/src/main/AndroidManifest.xml +++ b/app-unpriv/src/main/AndroidManifest.xml @@ -2,7 +2,7 @@ + Intent(this, LogsActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + putExtra("log", runBlocking { readSelfLog() }) + startActivity(this) + exitProcess(-1) + } + } + } +} \ No newline at end of file