Added don't screenshots in AppErrorsDetailActivity

This commit is contained in:
2022-05-14 01:36:00 +08:00
parent 7cf7c2930f
commit 24e622d778
8 changed files with 73 additions and 0 deletions

View File

@@ -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)
}

View File

@@ -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<ActivityAppErrorsDetailBinding>() {
/** 预导出的异常堆栈 */
private var stackTrace = ""
/** 已经显示的截图对话框 */
private var observerDialog: DialogBuilder? = null
/** 已截图的路径数组 */
private val observerPaths = hashSetOf<String>()
/** 截图监听注册 */
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<ActivityAppErrorsDetailBinding>() {
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<ActivityAppErrorsDetailBinding>() {
intent?.removeExtra(Const.EXTRA_APP_ERRORS_INFO)
finish()
}
override fun onDestroy() {
super.onDestroy()
/** 解除注册截图监听 */
contentResolver?.unregisterContentObserver(observer)
}
}

View File

@@ -45,4 +45,7 @@
<string name="no_cpu_abi">アビなし</string>
<string name="remove_record">レコードを削除</string>
<string name="are_you_sure_remove_record">このレコードを削除してもよろしいですか</string>
<string name="got_it">分かります</string>
<string name="dont_screenshot">スクリーンショットを撮らないでください</string>
<string name="dont_screenshot_tip">エラーログのスクリーンショットを撮ることはお勧めできません。このインターフェイスの右上隅にあるボタンをクリックして、ログの内容を抽出またはコピーする必要があります。</string>
</resources>

View File

@@ -45,4 +45,7 @@
<string name="no_cpu_abi">无原生库</string>
<string name="remove_record">移除记录</string>
<string name="are_you_sure_remove_record">你确定要移除这条记录吗?</string>
<string name="got_it">我知道了</string>
<string name="dont_screenshot">请不要截屏</string>
<string name="dont_screenshot_tip">在错误日志中截屏是不明智的做法,你应当点击此界面右上角的按钮提取或复制日志内容。</string>
</resources>

View File

@@ -45,4 +45,7 @@
<string name="no_cpu_abi">無原生庫</string>
<string name="remove_record">移除紀錄</string>
<string name="are_you_sure_remove_record">你確認要移除這條紀錄嗎?</string>
<string name="got_it">我懂了</string>
<string name="dont_screenshot">請不要捕獲熒屏</string>
<string name="dont_screenshot_tip">在錯誤日誌中捕獲熒屏是不明理的做法,你應當點擊此界面右上角的按鈕提取或複制日誌內容。</string>
</resources>

View File

@@ -45,4 +45,7 @@
<string name="no_cpu_abi">無原生庫</string>
<string name="remove_record">移除紀錄</string>
<string name="are_you_sure_remove_record">你確認要移除這條紀錄嗎?</string>
<string name="got_it">我懂了</string>
<string name="dont_screenshot">請不要捕獲熒屏</string>
<string name="dont_screenshot_tip">在錯誤日誌中捕獲熒屏是不明理的做法,你應當點擊此界面右上角的按鈕提取或複制日誌內容。</string>
</resources>

View File

@@ -45,4 +45,7 @@
<string name="no_cpu_abi">無原生庫</string>
<string name="remove_record">移除紀錄</string>
<string name="are_you_sure_remove_record">你確認要移除這條紀錄嗎?</string>
<string name="got_it">我懂了</string>
<string name="dont_screenshot">請不要捕獲熒屏</string>
<string name="dont_screenshot_tip">在錯誤日誌中捕獲熒屏是不明理的做法,你應當點擊此界面右上角的按鈕提取或複制日誌內容。</string>
</resources>

View File

@@ -44,4 +44,7 @@
<string name="no_cpu_abi">No ABI</string>
<string name="remove_record">Remove record</string>
<string name="are_you_sure_remove_record">Are you sure you want to remove this record?</string>
<string name="got_it">Got it</string>
<string name="dont_screenshot">Do not take screenshots</string>
<string name="dont_screenshot_tip">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.</string>
</resources>