Dantotsu/app/src/main/java/ani/dantotsu/others/CrashActivity.kt
2025-01-16 00:14:25 -06:00

63 lines
No EOL
2.2 KiB
Kotlin

package ani.dantotsu.others
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.FileProvider
import androidx.core.view.updateLayoutParams
import ani.dantotsu.R
import ani.dantotsu.databinding.ActivityCrashBinding
import ani.dantotsu.initActivity
import ani.dantotsu.navBarHeight
import ani.dantotsu.statusBarHeight
import ani.dantotsu.themes.ThemeManager
import eu.kanade.tachiyomi.util.system.copyToClipboard
import java.io.File
class CrashActivity : AppCompatActivity() {
private lateinit var binding: ActivityCrashBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
ThemeManager(this).applyTheme()
initActivity(this)
window.setFlags(
WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE
)
binding = ActivityCrashBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.root.updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = statusBarHeight
bottomMargin = navBarHeight
}
val stackTrace = intent.getStringExtra("stackTrace") ?: "No stack trace available"
binding.crashReportView.setText(stackTrace)
binding.crashReportView.setOnKeyListener(View.OnKeyListener { _, _, _ ->
true // Blocks input from hardware keyboards.
})
binding.copyButton.setOnClickListener {
copyToClipboard("Crash log", stackTrace)
}
binding.shareAsTextFileButton.setOnClickListener {
shareAsTextFile(stackTrace)
}
}
private fun shareAsTextFile(stackTrace: String) {
val file = File(cacheDir, "crash_log.txt")
file.writeText(stackTrace)
val uri = FileProvider.getUriForFile(this, "${packageName}.provider", file)
val intent = Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(Intent.EXTRA_STREAM, uri)
}
startActivity(Intent.createChooser(intent, getString(R.string.share)))
}
}