diff --git a/backend/mpc-system/services/service-party-android/app/src/main/java/com/durian/tssparty/MainActivity.kt b/backend/mpc-system/services/service-party-android/app/src/main/java/com/durian/tssparty/MainActivity.kt index b8c032a5..69a27267 100644 --- a/backend/mpc-system/services/service-party-android/app/src/main/java/com/durian/tssparty/MainActivity.kt +++ b/backend/mpc-system/services/service-party-android/app/src/main/java/com/durian/tssparty/MainActivity.kt @@ -159,25 +159,42 @@ fun TssPartyApp( val expectedLength = jsonBytes.size android.util.Log.d("MainActivity", "[EXPORT-FILE] Writing $expectedLength bytes...") - // 写入文件 - context.contentResolver.openOutputStream(targetUri)?.use { outputStream -> - outputStream.write(jsonBytes) - outputStream.flush() // 确保数据真正写入存储 - android.util.Log.d("MainActivity", "[EXPORT-FILE] Write and flush completed") - } ?: throw Exception("无法创建输出流") + // 写入文件(显式检查流创建) + val outputStream = context.contentResolver.openOutputStream(targetUri) + ?: throw Exception("无法创建输出流 - 可能是权限问题或存储已满") - // 验证写入完整性 + outputStream.use { + it.write(jsonBytes) + it.flush() // 确保数据真正写入存储 + android.util.Log.d("MainActivity", "[EXPORT-FILE] Write and flush completed") + } + + // 验证写入完整性(显式检查流创建) android.util.Log.d("MainActivity", "[EXPORT-FILE] Verifying file integrity...") - context.contentResolver.openInputStream(targetUri)?.use { inputStream -> - val writtenContent = inputStream.bufferedReader().readText() + val inputStream = context.contentResolver.openInputStream(targetUri) + ?: throw Exception("无法读取已写入的文件 - 文件可能未创建") + + inputStream.use { + val writtenContent = it.bufferedReader().readText() + android.util.Log.d("MainActivity", "[EXPORT-FILE] Read back ${writtenContent.length} bytes") + + // 首先检查文件是否为空(0字节) + if (writtenContent.isEmpty()) { + throw Exception("文件为空 (0 字节) - 写入失败") + } + + // 检查长度是否匹配 if (writtenContent.length != json.length) { throw Exception("文件长度不匹配: 期望 ${json.length}, 实际 ${writtenContent.length}") } + + // 检查内容是否完全一致 if (writtenContent != json) { - throw Exception("文件内容校验失败") + throw Exception("文件内容校验失败 - 数据损坏") } - android.util.Log.d("MainActivity", "[EXPORT-FILE] Integrity verification passed") - } ?: throw Exception("无法读取已写入的文件进行验证") + + android.util.Log.d("MainActivity", "[EXPORT-FILE] Integrity verification passed: ${writtenContent.length} bytes, content matches") + } // 验证通过 writeSucceeded = true