diff --git a/app/src/main/java/com/hikoncont/manager/SmartMediaProjectionManager.kt b/app/src/main/java/com/hikoncont/manager/SmartMediaProjectionManager.kt index f15ac7a..547884c 100644 --- a/app/src/main/java/com/hikoncont/manager/SmartMediaProjectionManager.kt +++ b/app/src/main/java/com/hikoncont/manager/SmartMediaProjectionManager.kt @@ -490,21 +490,18 @@ class SmartMediaProjectionManager( } /** - * 检查并恢复现有权限 + * 检查并恢复现有权限 - 只从 Holder 获取已有对象 */ private fun checkAndRestoreExistingPermission() { try { - val permissionData = MediaProjectionHolder.getPermissionData() - if (permissionData != null) { - val (resultCode, resultData) = permissionData - if (resultData != null) { - Log.i(TAG, "📱 发现现有权限数据,尝试恢复") - val projection = createMediaProjectionSafely(resultCode, resultData) - if (projection != null) { - Log.i(TAG, "✅ 现有权限恢复成功") - notifyPermissionRecovered() - } - } + // 只从 Holder 获取已有对象,不重新创建 + val existingProjection = MediaProjectionHolder.getMediaProjection() + if (existingProjection != null) { + Log.i(TAG, "✅ Holder中已有有效MediaProjection,直接复用") + mediaProjection = existingProjection + notifyPermissionRecovered() + } else { + Log.d(TAG, "📱 Holder中无有效MediaProjection,等待权限授予") } } catch (e: Exception) { Log.e(TAG, "❌ 检查现有权限失败", e)