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 */ /** @string Automatic generated */
fun areYouSureRemoveRecord(vararg objArrs: Any) = R.string.are_you_sure_remove_record.bind(*objArrs) 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.app.Activity
import android.content.Context import android.content.Context
import android.content.Intent 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 androidx.core.view.isGone
import com.fankes.apperrorstracking.R import com.fankes.apperrorstracking.R
import com.fankes.apperrorstracking.bean.AppErrorsInfoBean import com.fankes.apperrorstracking.bean.AppErrorsInfoBean
@@ -56,6 +61,30 @@ class AppErrorsDetailActivity : BaseActivity<ActivityAppErrorsDetailBinding>() {
/** 预导出的异常堆栈 */ /** 预导出的异常堆栈 */
private var stackTrace = "" 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() { override fun onCreate() {
val appErrorsInfo = runCatching { intent?.getSerializableExtra(Const.EXTRA_APP_ERRORS_INFO) as? AppErrorsInfoBean }.getOrNull() val appErrorsInfo = runCatching { intent?.getSerializableExtra(Const.EXTRA_APP_ERRORS_INFO) as? AppErrorsInfoBean }.getOrNull()
?: return toastAndFinish() ?: 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.text = if (y >= 30.dp(context = this)) appName(appErrorsInfo.packageName) else LocaleString.appName
} }
binding.detailTitleText.setOnClickListener { binding.appPanelScrollView.smoothScrollTo(0, 0) } 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) intent?.removeExtra(Const.EXTRA_APP_ERRORS_INFO)
finish() finish()
} }
override fun onDestroy() {
super.onDestroy()
/** 解除注册截图监听 */
contentResolver?.unregisterContentObserver(observer)
}
} }

View File

@@ -45,4 +45,7 @@
<string name="no_cpu_abi">アビなし</string> <string name="no_cpu_abi">アビなし</string>
<string name="remove_record">レコードを削除</string> <string name="remove_record">レコードを削除</string>
<string name="are_you_sure_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> </resources>

View File

@@ -45,4 +45,7 @@
<string name="no_cpu_abi">无原生库</string> <string name="no_cpu_abi">无原生库</string>
<string name="remove_record">移除记录</string> <string name="remove_record">移除记录</string>
<string name="are_you_sure_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> </resources>

View File

@@ -45,4 +45,7 @@
<string name="no_cpu_abi">無原生庫</string> <string name="no_cpu_abi">無原生庫</string>
<string name="remove_record">移除紀錄</string> <string name="remove_record">移除紀錄</string>
<string name="are_you_sure_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> </resources>

View File

@@ -45,4 +45,7 @@
<string name="no_cpu_abi">無原生庫</string> <string name="no_cpu_abi">無原生庫</string>
<string name="remove_record">移除紀錄</string> <string name="remove_record">移除紀錄</string>
<string name="are_you_sure_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> </resources>

View File

@@ -45,4 +45,7 @@
<string name="no_cpu_abi">無原生庫</string> <string name="no_cpu_abi">無原生庫</string>
<string name="remove_record">移除紀錄</string> <string name="remove_record">移除紀錄</string>
<string name="are_you_sure_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> </resources>

View File

@@ -44,4 +44,7 @@
<string name="no_cpu_abi">No ABI</string> <string name="no_cpu_abi">No ABI</string>
<string name="remove_record">Remove record</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="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> </resources>