diff --git a/app/src/main/java/com/fankes/apperrorstracking/const/Const.kt b/app/src/main/java/com/fankes/apperrorstracking/const/Const.kt index 7cb03c4..b482fef 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/const/Const.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/const/Const.kt @@ -46,6 +46,12 @@ object Const { /** 清空 [AppErrorsInfoBean] 数据 */ const val TYPE_APP_ERRORS_DATA_CLEAR = "app_errors_data_clear_type" + /** 删除指定 [AppErrorsInfoBean] 数据 */ + const val TYPE_APP_ERRORS_DATA_REMOVE = "app_errors_data_remove_type" + /** 获取到的 [AppErrorsInfoBean] 数据内容 */ - const val TAG_APP_ERRORS_DATA_CONTENT = "app_errors_data_content_tag" + const val TAG_APP_ERRORS_DATA_GET_CONTENT = "app_errors_data_get_content_tag" + + /** 指定删除的 [AppErrorsInfoBean] 数据内容 */ + const val TAG_APP_ERRORS_DATA_REMOVE_CONTENT = "app_errors_data_remove_content_tag" } \ No newline at end of file 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 0931d47..c18ac00 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 @@ -120,9 +120,14 @@ object FrameworkHooker : YukiBaseHooker() { action = Const.ACTION_MODULE_HANDLER_RECEIVER when (it) { Const.TYPE_APP_ERRORS_DATA_GET -> { - putExtra(Const.TAG_APP_ERRORS_DATA_CONTENT, appErrorsRecords) + putExtra(Const.TAG_APP_ERRORS_DATA_GET_CONTENT, appErrorsRecords) putExtra(Const.KEY_MODULE_HOST_FETCH, Const.TYPE_APP_ERRORS_DATA_GET) } + Const.TYPE_APP_ERRORS_DATA_REMOVE -> { + runCatching { intent.getSerializableExtra(Const.TAG_APP_ERRORS_DATA_REMOVE_CONTENT) as? AppErrorsInfoBean? } + .getOrNull()?.also { e -> appErrorsRecords.remove(e) } + putExtra(Const.KEY_MODULE_HOST_FETCH, Const.TYPE_APP_ERRORS_DATA_REMOVE) + } Const.TYPE_APP_ERRORS_DATA_CLEAR -> { appErrorsRecords.clear() putExtra(Const.KEY_MODULE_HOST_FETCH, Const.TYPE_APP_ERRORS_DATA_CLEAR) 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 c824027..5f05993 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/locale/LocaleString.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/locale/LocaleString.kt @@ -220,4 +220,10 @@ object LocaleString { /** @string Automatic generated */ fun noCpuAbi(vararg objArrs: Any) = R.string.no_cpu_abi.bind(*objArrs) + + /** @string Automatic generated */ + val areYouSureRemoveRecord get() = areYouSureRemoveRecord() + + /** @string Automatic generated */ + fun areYouSureRemoveRecord(vararg objArrs: Any) = R.string.are_you_sure_remove_record.bind(*objArrs) } \ No newline at end of file diff --git a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/AppErrorsRecordActivity.kt b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/AppErrorsRecordActivity.kt index 6384f75..4cb5ec5 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/AppErrorsRecordActivity.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/AppErrorsRecordActivity.kt @@ -167,6 +167,13 @@ class AppErrorsRecordActivity : BaseActivity() { when (item.itemId) { R.id.aerrors_view_detail -> AppErrorsDetailActivity.start(context = this, listData[it.position]) R.id.aerrors_app_info -> openSelfSetting(listData[it.position].packageName) + R.id.aerrors_remove_record -> + showDialog { + title = LocaleString.notice + msg = LocaleString.areYouSureRemoveRecord + confirmButton { FrameworkTool.removeAppErrorsInfoData(context, listData[it.position]) { refreshData() } } + cancelButton() + } } } return super.onContextItemSelected(item) diff --git a/app/src/main/java/com/fankes/apperrorstracking/utils/tool/FrameworkTool.kt b/app/src/main/java/com/fankes/apperrorstracking/utils/tool/FrameworkTool.kt index 1086adc..65a9c25 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/utils/tool/FrameworkTool.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/utils/tool/FrameworkTool.kt @@ -30,6 +30,7 @@ import android.content.IntentFilter import com.fankes.apperrorstracking.bean.AppErrorsInfoBean import com.fankes.apperrorstracking.const.Const import com.highcapable.yukihookapi.hook.log.loggerE +import java.io.Serializable /** * 系统框架控制工具 @@ -39,6 +40,9 @@ object FrameworkTool { /** 回调获取的 APP 异常信息 */ private var onAppErrorsInfoDataCallback: ((ArrayList) -> Unit)? = null + /** 回调 APP 异常信息是否移除 */ + private var onRemoveAppErrorsInfoDataCallback: (() -> Unit)? = null + /** 回调 APP 异常信息是否清空 */ private var onClearAppErrorsInfoDataCallback: (() -> Unit)? = null @@ -52,9 +56,10 @@ object FrameworkTool { if (it.isNotBlank()) when (it) { Const.TYPE_APP_ERRORS_DATA_GET -> runCatching { onAppErrorsInfoDataCallback?.invoke( - intent.getSerializableExtra(Const.TAG_APP_ERRORS_DATA_CONTENT) as ArrayList + intent.getSerializableExtra(Const.TAG_APP_ERRORS_DATA_GET_CONTENT) as ArrayList ) }.onFailure { onAppErrorsInfoDataCallback?.invoke(arrayListOf()) } + Const.TYPE_APP_ERRORS_DATA_REMOVE -> onRemoveAppErrorsInfoDataCallback?.invoke() Const.TYPE_APP_ERRORS_DATA_CLEAR -> onClearAppErrorsInfoDataCallback?.invoke() else -> {} } @@ -68,11 +73,22 @@ object FrameworkTool { * 发送广播 * @param context 实例 * @param type 类型 + * @param key 可选传值 + * @param value 可选传值 */ - private fun pushReceiver(context: Context, type: String) { + private fun pushReceiver(context: Context, type: String, key: String = "", value: Any = "") { context.sendBroadcast(Intent().apply { action = Const.ACTION_HOST_HANDLER_RECEIVER putExtra(Const.KEY_MODULE_HOST_FETCH, type) + if (key.isNotBlank()) putExtra( + key, when (value) { + is String -> value + is Int -> value + is Boolean -> value + is Serializable -> value + else -> error("value is not allowed") + } + ) }) } @@ -86,6 +102,17 @@ object FrameworkTool { pushReceiver(context, Const.TYPE_APP_ERRORS_DATA_GET) } + /** + * 移除指定 APP 异常信息 + * @param context 实例 + * @param appErrorsInfo 指定 APP 异常信息 + * @param it 成功后回调 + */ + fun removeAppErrorsInfoData(context: Context, appErrorsInfo: AppErrorsInfoBean, it: () -> Unit) { + onRemoveAppErrorsInfoDataCallback = it + pushReceiver(context, Const.TYPE_APP_ERRORS_DATA_REMOVE, Const.TAG_APP_ERRORS_DATA_REMOVE_CONTENT, appErrorsInfo) + } + /** * 清空 APP 异常信息数组 * @param context 实例 diff --git a/app/src/main/res/menu/menu_list_detail_action.xml b/app/src/main/res/menu/menu_list_detail_action.xml index 7039936..ab4a80b 100644 --- a/app/src/main/res/menu/menu_list_detail_action.xml +++ b/app/src/main/res/menu/menu_list_detail_action.xml @@ -6,4 +6,7 @@ + \ 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 cad75d3..1cb41b2 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -43,4 +43,6 @@ すべてのエラーレコードがエクスポートされました すべてのエラーレコードのエクスポートに失敗しました アビなし + レコードを削除 + このレコードを削除してもよろしいですか \ 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 6535ab1..a088dc3 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -43,4 +43,6 @@ 已导出全部异常记录 导出全部异常记录失败 无原生库 + 移除记录 + 你确定要移除这条记录吗 \ 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 9597e59..375a776 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -43,4 +43,6 @@ 已導出全部異常紀錄 導出全部異常紀錄失敗 無原生庫 + 移除紀錄 + 你確認要移除這條紀錄嗎 \ 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 6a96a94..fe8abfa 100644 --- a/app/src/main/res/values-zh-rMO/strings.xml +++ b/app/src/main/res/values-zh-rMO/strings.xml @@ -43,4 +43,6 @@ 已導出全部異常紀錄 導出全部異常紀錄失敗 無原生庫 + 移除紀錄 + 你確認要移除這條紀錄嗎 \ 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 0121b82..0c5c2b8 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -43,4 +43,6 @@ 已導出全部異常紀錄 導出全部異常紀錄失敗 無原生庫 + 移除紀錄 + 你確認要移除這條紀錄嗎 \ 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 eedf183..588bd66 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -42,4 +42,6 @@ All errors record exported Failed to exported all errors record No ABI + Remove record + Are you sure you want to remove this record? \ No newline at end of file