From 24e622d7781dc0c832d7a49f8e7c98187e9fc821 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Sat, 14 May 2022 01:36:00 +0800 Subject: [PATCH] Added don't screenshots in AppErrorsDetailActivity --- .../apperrorstracking/locale/LocaleString.kt | 18 +++++++++ .../ui/activity/AppErrorsDetailActivity.kt | 37 +++++++++++++++++++ app/src/main/res/values-ja/strings.xml | 3 ++ app/src/main/res/values-zh-rCN/strings.xml | 3 ++ app/src/main/res/values-zh-rHK/strings.xml | 3 ++ app/src/main/res/values-zh-rMO/strings.xml | 3 ++ app/src/main/res/values-zh-rTW/strings.xml | 3 ++ app/src/main/res/values/strings.xml | 3 ++ 8 files changed, 73 insertions(+) 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 6b1837d..7ad2b08 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/locale/LocaleString.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/locale/LocaleString.kt @@ -232,4 +232,22 @@ object LocaleString { /** @string Automatic generated */ fun areYouSureRemoveRecord(vararg objArrs: Any) = R.string.are_you_sure_remove_record.bind(*objArrs) + + /** @string Automatic generated */ + val gotIt get() = gotIt() + + /** @string Automatic generated */ + fun gotIt(vararg objArrs: Any) = R.string.got_it.bind(*objArrs) + + /** @string Automatic generated */ + val dontScreenshot get() = dontScreenshot() + + /** @string Automatic generated */ + fun dontScreenshot(vararg objArrs: Any) = R.string.dont_screenshot.bind(*objArrs) + + /** @string Automatic generated */ + val dontScreenshotTip get() = dontScreenshotTip() + + /** @string Automatic generated */ + fun dontScreenshotTip(vararg objArrs: Any) = R.string.dont_screenshot_tip.bind(*objArrs) } \ No newline at end of file diff --git a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/AppErrorsDetailActivity.kt b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/AppErrorsDetailActivity.kt index 2af2414..edd690b 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/AppErrorsDetailActivity.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/AppErrorsDetailActivity.kt @@ -26,6 +26,11 @@ package com.fankes.apperrorstracking.ui.activity import android.app.Activity import android.content.Context import android.content.Intent +import android.database.ContentObserver +import android.net.Uri +import android.os.Handler +import android.provider.MediaStore +import android.view.WindowManager import androidx.core.view.isGone import com.fankes.apperrorstracking.R import com.fankes.apperrorstracking.bean.AppErrorsInfoBean @@ -56,6 +61,30 @@ class AppErrorsDetailActivity : BaseActivity() { /** 预导出的异常堆栈 */ private var stackTrace = "" + /** 已经显示的截图对话框 */ + private var observerDialog: DialogBuilder? = null + + /** 已截图的路径数组 */ + private val observerPaths = hashSetOf() + + /** 截图监听注册 */ + private val observer = object : ContentObserver(Handler()) { + override fun onChange(selfChange: Boolean, uri: Uri?) { + if (observerPaths.contains(uri?.path ?: "")) return + observerDialog?.cancel() + showDialog { + observerDialog = this + title = LocaleString.dontScreenshot + msg = LocaleString.dontScreenshotTip + confirmButton(LocaleString.gotIt) + noCancelable() + } + uri?.path?.let { observerPaths.add(it) } + /** 截图一次后就禁止再次截图 */ + window?.addFlags(WindowManager.LayoutParams.FLAG_SECURE) + } + } + override fun onCreate() { val appErrorsInfo = runCatching { intent?.getSerializableExtra(Const.EXTRA_APP_ERRORS_INFO) as? AppErrorsInfoBean }.getOrNull() ?: return toastAndFinish() @@ -94,6 +123,8 @@ class AppErrorsDetailActivity : BaseActivity() { binding.detailTitleText.text = if (y >= 30.dp(context = this)) appName(appErrorsInfo.packageName) else LocaleString.appName } binding.detailTitleText.setOnClickListener { binding.appPanelScrollView.smoothScrollTo(0, 0) } + /** 注册截图监听 */ + contentResolver?.registerContentObserver(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, true, observer) } /** 弹出提示并退出 */ @@ -116,4 +147,10 @@ class AppErrorsDetailActivity : BaseActivity() { intent?.removeExtra(Const.EXTRA_APP_ERRORS_INFO) finish() } + + override fun onDestroy() { + super.onDestroy() + /** 解除注册截图监听 */ + contentResolver?.unregisterContentObserver(observer) + } } \ No newline at end of file diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 1cb41b2..bfdf33e 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -45,4 +45,7 @@ アビなし レコードを削除 このレコードを削除してもよろしいですか + 分かります + スクリーンショットを撮らないでください + エラーログのスクリーンショットを撮ることはお勧めできません。このインターフェイスの右上隅にあるボタンをクリックして、ログの内容を抽出またはコピーする必要があります。 \ 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 57a9692..4226fb1 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -45,4 +45,7 @@ 无原生库 移除记录 你确定要移除这条记录吗? + 我知道了 + 请不要截屏 + 在错误日志中截屏是不明智的做法,你应当点击此界面右上角的按钮提取或复制日志内容。 \ 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 5ec41d5..8ffeae3 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -45,4 +45,7 @@ 無原生庫 移除紀錄 你確認要移除這條紀錄嗎? + 我懂了 + 請不要捕獲熒屏 + 在錯誤日誌中捕獲熒屏是不明理的做法,你應當點擊此界面右上角的按鈕提取或複制日誌內容。 \ 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 d493598..2609e07 100644 --- a/app/src/main/res/values-zh-rMO/strings.xml +++ b/app/src/main/res/values-zh-rMO/strings.xml @@ -45,4 +45,7 @@ 無原生庫 移除紀錄 你確認要移除這條紀錄嗎? + 我懂了 + 請不要捕獲熒屏 + 在錯誤日誌中捕獲熒屏是不明理的做法,你應當點擊此界面右上角的按鈕提取或複制日誌內容。 \ 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 96a10e2..576a9f4 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -45,4 +45,7 @@ 無原生庫 移除紀錄 你確認要移除這條紀錄嗎? + 我懂了 + 請不要捕獲熒屏 + 在錯誤日誌中捕獲熒屏是不明理的做法,你應當點擊此界面右上角的按鈕提取或複制日誌內容。 \ 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 588bd66..5b418ba 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -44,4 +44,7 @@ No ABI Remove record Are you sure you want to remove this record? + Got it + Do not take screenshots + It is not advisable to take a screenshot of the error log, you should extract or copy the log content by clicking the button in the upper right corner of this interface. \ No newline at end of file