Modify allowed multi-user app errors dialog's "Reopen App" option to start Activity with correct user id

This commit is contained in:
2022-10-03 06:14:33 +08:00
parent 3156a1721e
commit fe94441e9a
4 changed files with 11 additions and 7 deletions

View File

@@ -26,6 +26,7 @@ import java.io.Serializable
/** /**
* 应用异常信息显示 bean * 应用异常信息显示 bean
* @param userId APP 用户 ID
* @param packageName APP 包名 * @param packageName APP 包名
* @param processName APP 进程名 * @param processName APP 进程名
* @param appName APP 名称 * @param appName APP 名称
@@ -35,6 +36,7 @@ import java.io.Serializable
* @param isShowReopenButton 是否显示重新打开按钮 * @param isShowReopenButton 是否显示重新打开按钮
*/ */
data class AppErrorsDisplayBean( data class AppErrorsDisplayBean(
@Keep var userId: Int,
@Keep var packageName: String, @Keep var packageName: String,
@Keep var processName: String, @Keep var processName: String,
@Keep var appName: String, @Keep var appName: String,

View File

@@ -98,7 +98,7 @@ object FrameworkHooker : YukiBaseHooker() {
onCreate { appErrorsRecords = ConfigData.getResolverString(ConfigData.APP_ERRORS_DATA).toEntity() ?: arrayListOf() } onCreate { appErrorsRecords = ConfigData.getResolverString(ConfigData.APP_ERRORS_DATA).toEntity() ?: arrayListOf() }
} }
FrameworkTool.Host.with(instance = this) { FrameworkTool.Host.with(instance = this) {
onOpenAppUsedFramework { appContext?.openApp(it) } onOpenAppUsedFramework { appContext?.openApp(it.first, it.second) }
onPushAppErrorsInfoData { appErrorsRecords } onPushAppErrorsInfoData { appErrorsRecords }
onRemoveAppErrorsInfoData { onRemoveAppErrorsInfoData {
appErrorsRecords.remove(it) appErrorsRecords.remove(it)
@@ -295,6 +295,7 @@ object FrameworkHooker : YukiBaseHooker() {
/** 启动错误对话框显示窗口 */ /** 启动错误对话框显示窗口 */
AppErrorsDisplayActivity.start( AppErrorsDisplayActivity.start(
context, AppErrorsDisplayBean( context, AppErrorsDisplayBean(
userId = userId,
packageName = packageName, packageName = packageName,
processName = processName, processName = processName,
appName = appName, appName = appName,

View File

@@ -80,7 +80,7 @@ class AppErrorsDisplayActivity : BaseActivity<ActivityAppErrorsDisplayBinding>()
} }
binding.closeAppItem.setOnClickListener { cancel() } binding.closeAppItem.setOnClickListener { cancel() }
binding.reopenAppItem.setOnClickListener { binding.reopenAppItem.setOnClickListener {
FrameworkTool.openAppUsedFramework(context, appErrorsDisplay.packageName) FrameworkTool.openAppUsedFramework(context, appErrorsDisplay.packageName, appErrorsDisplay.userId)
cancel() cancel()
} }
binding.errorDetailItem.setOnClickListener { binding.errorDetailItem.setOnClickListener {

View File

@@ -56,7 +56,7 @@ object FrameworkTool {
private const val CALL_UNMUTE_ERRORS_APP_DATA_RESULT = "call_unmute_errors_app_data_result" private const val CALL_UNMUTE_ERRORS_APP_DATA_RESULT = "call_unmute_errors_app_data_result"
private const val CALL_UNMUTE_ALL_ERRORS_APPS_DATA_RESULT = "call_unmute_all_errors_apps_data_result" private const val CALL_UNMUTE_ALL_ERRORS_APPS_DATA_RESULT = "call_unmute_all_errors_apps_data_result"
private val CALL_OPEN_SPECIFY_APP = ChannelData<String>("call_open_specify_app") private val CALL_OPEN_SPECIFY_APP = ChannelData<Pair<String, Int>>("call_open_specify_app")
private val CALL_APP_LIST_DATA_GET = ChannelData<AppFiltersBean>("call_app_info_list_data_get") private val CALL_APP_LIST_DATA_GET = ChannelData<AppFiltersBean>("call_app_info_list_data_get")
private val CALL_APP_ERRORS_DATA_REMOVE = ChannelData<AppErrorsInfoBean>("call_app_errors_data_remove") private val CALL_APP_ERRORS_DATA_REMOVE = ChannelData<AppErrorsInfoBean>("call_app_errors_data_remove")
private val CALL_APP_LIST_DATA_GET_RESULT = ChannelData<ArrayList<AppInfoBean>>("call_app_info_list_data_get_result") private val CALL_APP_LIST_DATA_GET_RESULT = ChannelData<ArrayList<AppInfoBean>>("call_app_info_list_data_get_result")
@@ -84,9 +84,9 @@ object FrameworkTool {
/** /**
* 监听使用系统框架打开 APP * 监听使用系统框架打开 APP
* @param result 回调包名 * @param result 回调包名和用户 ID
*/ */
fun onOpenAppUsedFramework(result: (String) -> Unit) = instance?.dataChannel?.wait(CALL_OPEN_SPECIFY_APP) { result(it) } fun onOpenAppUsedFramework(result: (Pair<String, Int>) -> Unit) = instance?.dataChannel?.wait(CALL_OPEN_SPECIFY_APP) { result(it) }
/** /**
* 监听发送 APP 异常信息数组 * 监听发送 APP 异常信息数组
@@ -230,9 +230,10 @@ object FrameworkTool {
* 使用系统框架打开 [packageName] * 使用系统框架打开 [packageName]
* @param context 实例 * @param context 实例
* @param packageName APP 包名 * @param packageName APP 包名
* @param userId APP 用户 ID
*/ */
fun openAppUsedFramework(context: Context, packageName: String) = fun openAppUsedFramework(context: Context, packageName: String, userId: Int) =
context.dataChannel(SYSTEM_FRAMEWORK_NAME).put(CALL_OPEN_SPECIFY_APP, packageName) context.dataChannel(SYSTEM_FRAMEWORK_NAME).put(CALL_OPEN_SPECIFY_APP, Pair(packageName, userId))
/** /**
* 获取 APP 异常信息数组 * 获取 APP 异常信息数组