From d42a69153787e3a5badad45d16cd7fdccae6d73c Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Sun, 8 May 2022 16:01:28 +0800 Subject: [PATCH] Added dialog can remove from HashMap on canceled --- .../hook/entity/FrameworkHooker.kt | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/fankes/apperrorstracking/hook/entity/FrameworkHooker.kt b/app/src/main/java/com/fankes/apperrorstracking/hook/entity/FrameworkHooker.kt index 21efbf2..9fbbccc 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/hook/entity/FrameworkHooker.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/hook/entity/FrameworkHooker.kt @@ -163,13 +163,16 @@ object FrameworkHooker : YukiBaseHooker() { android.R.style.Theme_Material_Dialog else android.R.style.Theme_Material_Light_Dialog ).create().apply { + /** + * 取消对话框并从缓存中移除 + * @param isRemoveOnly 是否仅移除 + */ + fun cancelAndRemove(isRemoveOnly: Boolean = false) { + if (isRemoveOnly.not()) cancel() + openedErrorsDialogs.remove(packageName) + } setTitle("$appName ${if (isRepeating) "屡次停止运行" else "已停止运行"}") setView(LinearLayout(context).apply { - /** 取消对话框并从缓存中移除 */ - fun cancelAndRemove() { - cancel() - openedErrorsDialogs.remove(packageName) - } orientation = LinearLayout.VERTICAL /** 应用信息按钮 */ val appInfoButton = @@ -208,6 +211,8 @@ object FrameworkHooker : YukiBaseHooker() { window?.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT) /** 记录实例 */ openedErrorsDialogs[packageName] = this + /** 设置取消对话框监听 */ + setOnCancelListener { cancelAndRemove(isRemoveOnly = true) } }.show() /** 打印错误日志 */ loggerE(msg = "Process \"$packageName\" has crashed${if (isRepeating) " again" else ""}")