Added Logcat main menu item
This commit is contained in:
@ -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)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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" />
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
Reference in New Issue
Block a user