@@ -127,13 +127,29 @@ class ShareActivity : ReactActivity() {
127127 NativeLogger .d(TAG , " Multiple files share: ${uris.size} files" )
128128
129129 // Copy all files to cache directory and collect per-file metadata
130+ // 同名文件去重:跟踪已使用的文件名,冲突时追加 " (1)", " (2)" 等后缀
130131 val copiedPaths = ArrayList <String >()
131132 val fileNames = ArrayList <String >()
133+ val usedNames = HashMap <String , Int >()
132134
133135 for (uri in uris) {
134- val fileName = getFileName(uri, type)
136+ var fileName = getFileName(uri, type)
135137
136- val copiedFile = copyUriToCache(uri, type)
138+ // 去重:如果文件名已被使用,追加数字后缀
139+ val count = usedNames[fileName]
140+ if (count != null ) {
141+ usedNames[fileName] = count + 1
142+ val dotIndex = fileName.lastIndexOf(' .' )
143+ if (dotIndex > 0 ) {
144+ fileName = " ${fileName.substring(0 , dotIndex)} (${count + 1 } )${fileName.substring(dotIndex)} "
145+ } else {
146+ fileName = " $fileName (${count + 1 } )"
147+ }
148+ } else {
149+ usedNames[fileName] = 1
150+ }
151+
152+ val copiedFile = copyUriToCache(uri, type, fileName)
137153 if (copiedFile != null ) {
138154 copiedPaths.add(" file://${copiedFile.absolutePath} " )
139155 fileNames.add(fileName)
@@ -157,7 +173,7 @@ class ShareActivity : ReactActivity() {
157173 * Copy content from URI to cache directory.
158174 * Returns the copied file, or null if failed.
159175 */
160- private fun copyUriToCache (uri : Uri , mimeType : String? ): File ? {
176+ private fun copyUriToCache (uri : Uri , mimeType : String? , desiredName : String? = null ): File ? {
161177 return try {
162178 // Open input stream from content provider
163179 val inputStream: InputStream ? = contentResolver.openInputStream(uri)
@@ -166,8 +182,8 @@ class ShareActivity : ReactActivity() {
166182 return null
167183 }
168184
169- // Get file name from URI or generate one
170- val fileName = getFileName(uri, mimeType)
185+ // Get file name from URI or generate one (use desiredName if provided for dedup)
186+ val fileName = desiredName ? : getFileName(uri, mimeType)
171187
172188 // Create file in cache directory
173189 val cacheDir = cacheDir
0 commit comments