From 108fd9e4eaf6678a02ca71f89910cc48bae7c2f5 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Wed, 1 Jun 2022 05:57:26 +0800 Subject: [PATCH] Added share error stack function in AppErrorsDetailActivity --- .../bean/AppErrorsInfoBean.kt | 23 +++++++++++++++++-- .../apperrorstracking/locale/LocaleString.kt | 6 +++++ .../errors/AppErrorsDetailActivity.kt | 8 ++++++- .../errors/AppErrorsRecordActivity.kt | 2 +- app/src/main/res/drawable/ic_share.xml | 9 ++++++++ .../res/layout/activity_app_errors_detail.xml | 9 ++++++++ app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rHK/strings.xml | 1 + app/src/main/res/values-zh-rMO/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 12 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable/ic_share.xml diff --git a/app/src/main/java/com/fankes/apperrorstracking/bean/AppErrorsInfoBean.kt b/app/src/main/java/com/fankes/apperrorstracking/bean/AppErrorsInfoBean.kt index 9c15d11..5e00814 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/bean/AppErrorsInfoBean.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/bean/AppErrorsInfoBean.kt @@ -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" + diff --git a/app/src/main/java/com/fankes/apperrorstracking/locale/LocaleString.kt b/app/src/main/java/com/fankes/apperrorstracking/locale/LocaleString.kt index 8e692b9..832cc3f 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/locale/LocaleString.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/locale/LocaleString.kt @@ -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) } \ No newline at end of file diff --git a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt index b47e386..a650df5 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt @@ -68,7 +68,7 @@ class AppErrorsDetailActivity : BaseActivity() { } 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() { }, 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) diff --git a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsRecordActivity.kt b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsRecordActivity.kt index 01120dc..827071a 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsRecordActivity.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsRecordActivity.kt @@ -136,7 +136,7 @@ class AppErrorsRecordActivity : BaseActivity() { ("${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) diff --git a/app/src/main/res/drawable/ic_share.xml b/app/src/main/res/drawable/ic_share.xml new file mode 100644 index 0000000..4d49d79 --- /dev/null +++ b/app/src/main/res/drawable/ic_share.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_app_errors_detail.xml b/app/src/main/res/layout/activity_app_errors_detail.xml index 6e7a7f4..9190175 100644 --- a/app/src/main/res/layout/activity_app_errors_detail.xml +++ b/app/src/main/res/layout/activity_app_errors_detail.xml @@ -68,6 +68,15 @@ android:src="@drawable/ic_export" android:tint="@color/colorTextGray" android:tooltipText="@string/export_to_file" /> + + 月前 年前 エラープロセス「%1$s」 + エラースタックをシェアする \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 93f9557..e9d3f55 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -71,4 +71,5 @@ 月前 年前 异常进程 \"%1$s\" + 分享异常堆栈 \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 37d8739..cc9fe48 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -71,4 +71,5 @@ 月前 年前 異常進程 \"%1$s\" + 分享異常堆棧 \ No newline at end of file diff --git a/app/src/main/res/values-zh-rMO/strings.xml b/app/src/main/res/values-zh-rMO/strings.xml index 5b32dfa..40c2c46 100644 --- a/app/src/main/res/values-zh-rMO/strings.xml +++ b/app/src/main/res/values-zh-rMO/strings.xml @@ -71,4 +71,5 @@ 月前 年前 異常進程 \"%1$s\" + 分享異常堆棧 \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 147c0ed..8c01d8b 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -71,4 +71,5 @@ 月前 年前 異常進程 \"%1$s\" + 分享異常堆棧 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 33d7c63..b767e61 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -71,4 +71,5 @@ month ago year ago Crash Process \"%1$s\" + Share error stack \ No newline at end of file