Added Logcat main menu item

This commit is contained in:
Juha Heinanen
2024-10-30 12:37:09 +02:00
parent 7486c117fd
commit 20533a90fc
4 changed files with 45 additions and 1 deletions

View File

@ -90,6 +90,7 @@ class MainActivity : AppCompatActivity() {
private lateinit var configRequest: ActivityResultLauncher<Intent>
private lateinit var backupRequest: ActivityResultLauncher<Intent>
private lateinit var restoreRequest: ActivityResultLauncher<Intent>
private lateinit var logcatRequest: ActivityResultLauncher<Intent>
private lateinit var contactsRequest: ActivityResultLauncher<Intent>
private lateinit var callsRequest: ActivityResultLauncher<Intent>
private lateinit var comDevChangedListener: AudioManager.OnCommunicationDeviceChangedListener
@ -615,6 +616,24 @@ class MainActivity : AppCompatActivity() {
}
}
logcatRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (it.resultCode == Activity.RESULT_OK)
it.data?.data?.also { uri ->
try {
val out = contentResolver.openOutputStream(uri)
val process = Runtime.getRuntime().exec("logcat -d --pid=${Process.myPid()}")
val bufferedReader = process.inputStream.bufferedReader()
bufferedReader.forEachLine { line ->
out!!.write(line.toByteArray())
out.write('\n'.code.toByte().toInt())
}
out!!.close()
} catch (e: Exception) {
Log.e(TAG, "Failed to write logcat to file")
}
}
}
swipeRefresh.setOnTouchListener(object : OnSwipeTouchListener(this@MainActivity) {
override fun onSwipeLeft() {
@ -1320,6 +1339,12 @@ class MainActivity : AppCompatActivity() {
exitProcess(0)
}
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
if (Build.VERSION.SDK_INT >= 29)
menu.findItem(R.id.logcat).setVisible(true)
return super.onPrepareOptionsMenu(menu)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.main_menu, menu)
@ -1464,6 +1489,11 @@ class MainActivity : AppCompatActivity() {
}
}
R.id.logcat -> {
if (Build.VERSION.SDK_INT >= 29)
pickupFileFromDownloads("logcat")
}
R.id.about -> {
startActivity(Intent(this, AboutActivity::class.java))
}
@ -1494,6 +1524,15 @@ class MainActivity : AppCompatActivity() {
putExtra(DocumentsContract.EXTRA_INITIAL_URI, MediaStore.Downloads.EXTERNAL_CONTENT_URI)
})
}
"logcat" -> {
logcatRequest.launch(Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "text/plain"
putExtra(Intent.EXTRA_TITLE, "baresip_logcat_" +
SimpleDateFormat("yyyy_MM_dd_HH_mm_ss", Locale.getDefault()).format(Date()))
putExtra(DocumentsContract.EXTRA_INITIAL_URI, MediaStore.Downloads.EXTERNAL_CONTENT_URI)
})
}
}
}

View File

@ -62,7 +62,7 @@ open class OnSwipeTouchListener(ctx: Context) : View.OnTouchListener {
}
} catch (e: Exception) {
Log.e(TAG, "onFling exception $e")
e.printStackTrace()
// e.printStackTrace()
}
return result
}

View File

@ -15,6 +15,10 @@
<item android:id="@+id/restore"
android:title="@string/restore" />
<item android:id="@+id/logcat"
android:visible="false"
android:title="@string/logcat" />
<item android:id="@+id/restart"
android:title="@string/restart" />

View File

@ -455,6 +455,7 @@
<!-- Main Activity -->
<string name="backup">Backup</string>
<string name="restore">Restore</string>
<string name="logcat" translatable="false">Logcat</string>
<string name="about">About</string>
<string name="restart">Restart</string>
<string name="quit">Quit</string>