mirror of
https://github.com/KitsunePie/AppErrorsTracking.git
synced 2025-09-01 16:55:18 +08:00
Added share error stack function in AppErrorsDetailActivity
This commit is contained in:
@@ -107,10 +107,29 @@ data class AppErrorsInfoBean(
|
||||
val dateTime get() = SimpleDateFormat.getDateTimeInstance().format(Date(timestamp)) ?: "DateTime not found"
|
||||
|
||||
/**
|
||||
* 获取异常堆栈模板
|
||||
* 获取异常堆栈分享模板
|
||||
* @return [String]
|
||||
*/
|
||||
val stackOutputContent
|
||||
val stackOutputShareContent
|
||||
get() = "Generated by AppErrorsTracking\n" +
|
||||
"Project Url: https://github.com/KitsunePie/AppErrorsTracking\n" +
|
||||
"===============\n" +
|
||||
"[Device Brand]: ${Build.BRAND}\n" +
|
||||
"[Device Model]: ${Build.MODEL}\n" +
|
||||
"[Display]: ${Build.DISPLAY}\n" +
|
||||
"[Android Version]: ${Build.VERSION.RELEASE}\n" +
|
||||
"[API Version]: ${Build.VERSION.SDK_INT}\n" +
|
||||
"[Package Name]: $packageName\n" +
|
||||
"[Error Type]: ${if (isNativeCrash) "Native" else "Jvm"}\n" +
|
||||
"[Crash Time]: $dateTime\n" +
|
||||
"[Stack Trace]:\n" +
|
||||
stackTrace
|
||||
|
||||
/**
|
||||
* 获取异常堆栈文件模板
|
||||
* @return [String]
|
||||
*/
|
||||
val stackOutputFileContent
|
||||
get() = "================================================================\n" +
|
||||
" Generated by AppErrorsTracking\n" +
|
||||
" Project Url: https://github.com/KitsunePie/AppErrorsTracking\n" +
|
||||
|
@@ -334,4 +334,10 @@ object LocaleString {
|
||||
|
||||
/** @string Automatic generated */
|
||||
fun crashProcess(vararg objArrs: Any) = R.string.crash_process.bind(*objArrs)
|
||||
|
||||
/** @string Automatic generated */
|
||||
val shareErrorStack get() = shareErrorStack()
|
||||
|
||||
/** @string Automatic generated */
|
||||
fun shareErrorStack(vararg objArrs: Any) = R.string.share_error_stack.bind(*objArrs)
|
||||
}
|
@@ -68,7 +68,7 @@ class AppErrorsDetailActivity : BaseActivity<ActivityAppErrorsDetailBinding>() {
|
||||
}
|
||||
binding.copyIcon.setOnClickListener { copyToClipboard(appErrorsInfo.stackTrace) }
|
||||
binding.exportIcon.setOnClickListener {
|
||||
stackTrace = appErrorsInfo.stackOutputContent
|
||||
stackTrace = appErrorsInfo.stackOutputFileContent
|
||||
runCatching {
|
||||
startActivityForResult(Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
|
||||
addCategory(Intent.CATEGORY_OPENABLE)
|
||||
@@ -77,6 +77,12 @@ class AppErrorsDetailActivity : BaseActivity<ActivityAppErrorsDetailBinding>() {
|
||||
}, WRITE_REQUEST_CODE)
|
||||
}.onFailure { toast(msg = "Start Android SAF failed") }
|
||||
}
|
||||
binding.shareIcon.setOnClickListener {
|
||||
startActivity(Intent.createChooser(Intent(Intent.ACTION_SEND).apply {
|
||||
type = "text/plain"
|
||||
putExtra(Intent.EXTRA_TEXT, appErrorsInfo.stackOutputShareContent)
|
||||
}, LocaleString.shareErrorStack))
|
||||
}
|
||||
binding.appIcon.setImageDrawable(appIcon(appErrorsInfo.packageName))
|
||||
binding.appNameText.text = appName(appErrorsInfo.packageName)
|
||||
binding.appVersionText.text = appVersion(appErrorsInfo.packageName)
|
||||
|
@@ -136,7 +136,7 @@ class AppErrorsRecordActivity : BaseActivity<ActivityAppErrorsRecordBinding>() {
|
||||
("${cacheDir.absolutePath}/temp").also { path ->
|
||||
File(path).mkdirs()
|
||||
listData.takeIf { it.isNotEmpty() }?.forEach {
|
||||
File("$path/${it.packageName}_${it.timestamp}.log").writeText(it.stackOutputContent)
|
||||
File("$path/${it.packageName}_${it.timestamp}.log").writeText(it.stackOutputFileContent)
|
||||
}
|
||||
outPutFilePath = "${cacheDir.absolutePath}/temp_${System.currentTimeMillis()}.zip"
|
||||
ZipFileTool.zipMultiFile(path, outPutFilePath)
|
||||
|
9
app/src/main/res/drawable/ic_share.xml
Normal file
9
app/src/main/res/drawable/ic_share.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="150dp"
|
||||
android:height="150dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:pathData="M579.2,736.9l-218,-118.9a149.3,149.3 0,1 1,0 -212l218,-118.9a149.3,149.3 0,1 1,40.9 74.9l-218,118.9a149.9,149.9 0,0 1,0 62.2l218,118.9a149.3,149.3 0,1 1,-40.9 74.9z"
|
||||
android:fillColor="#ffffff"/>
|
||||
</vector>
|
@@ -68,6 +68,15 @@
|
||||
android:src="@drawable/ic_export"
|
||||
android:tint="@color/colorTextGray"
|
||||
android:tooltipText="@string/export_to_file" />
|
||||
|
||||
<androidx.constraintlayout.utils.widget.ImageFilterView
|
||||
android:id="@+id/share_icon"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:src="@drawable/ic_share"
|
||||
android:tint="@color/colorTextGray"
|
||||
android:tooltipText="@string/share_error_stack" />
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
|
@@ -71,4 +71,5 @@
|
||||
<string name="month_ago">月前</string>
|
||||
<string name="year_ago">年前</string>
|
||||
<string name="crash_process">エラープロセス「%1$s」</string>
|
||||
<string name="share_error_stack">エラースタックをシェアする</string>
|
||||
</resources>
|
@@ -71,4 +71,5 @@
|
||||
<string name="month_ago">月前</string>
|
||||
<string name="year_ago">年前</string>
|
||||
<string name="crash_process">异常进程 \"%1$s\"</string>
|
||||
<string name="share_error_stack">分享异常堆栈</string>
|
||||
</resources>
|
@@ -71,4 +71,5 @@
|
||||
<string name="month_ago">月前</string>
|
||||
<string name="year_ago">年前</string>
|
||||
<string name="crash_process">異常進程 \"%1$s\"</string>
|
||||
<string name="share_error_stack">分享異常堆棧</string>
|
||||
</resources>
|
@@ -71,4 +71,5 @@
|
||||
<string name="month_ago">月前</string>
|
||||
<string name="year_ago">年前</string>
|
||||
<string name="crash_process">異常進程 \"%1$s\"</string>
|
||||
<string name="share_error_stack">分享異常堆棧</string>
|
||||
</resources>
|
@@ -71,4 +71,5 @@
|
||||
<string name="month_ago">月前</string>
|
||||
<string name="year_ago">年前</string>
|
||||
<string name="crash_process">異常進程 \"%1$s\"</string>
|
||||
<string name="share_error_stack">分享異常堆棧</string>
|
||||
</resources>
|
@@ -71,4 +71,5 @@
|
||||
<string name="month_ago">month ago</string>
|
||||
<string name="year_ago">year ago</string>
|
||||
<string name="crash_process">Crash Process \"%1$s\"</string>
|
||||
<string name="share_error_stack">Share error stack</string>
|
||||
</resources>
|
Reference in New Issue
Block a user