Skip to content

Commit 19f0a2a

Browse files
tom93naveensingh
andauthored
fix: resolve proper filename when saving a shared file (#86)
* Fix filename when saving a shared file Previously, the code used the last path component of the content URI, but that isn't necessarily the filename -- it can be a numeric ID. Switch to the helper function getFilenameFromContentUri(), which uses ContentResolver to read the DISPLAY_NAME column. (If that fails, we fall back to the last component of the content URI as before, because we don't have anything better to use.) Also improve the way the MIME type is determined. Previously it was just based on the file extension. Switch to first query the ContentResolver, then try the type of the Intent (which is supposed to be set to the MIME type of the data for ACTION_SEND, but may be set to "*/*" if the type is unknown), and only then fall back to using the file extension. Fixes #37. * style: shorten lines --------- Co-authored-by: Naveen Singh <[email protected]> Co-authored-by: Naveen Singh <[email protected]>
1 parent 97dcf30 commit 19f0a2a

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

app/src/main/kotlin/org/fossify/filemanager/activities/SaveAsActivity.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,13 @@ class SaveAsActivity : SimpleActivity() {
3535
}
3636
}
3737

38-
val source = intent.getParcelableExtra<Uri>(Intent.EXTRA_STREAM)
39-
val mimeType = source!!.toString().getMimeType()
38+
val source = intent.getParcelableExtra<Uri>(Intent.EXTRA_STREAM)!!
39+
val filename = getFilenameFromContentUri(source)
40+
?: source.toString().getFilenameFromPath()
41+
val mimeType = contentResolver.getType(source)
42+
?: intent.type?.takeIf { it != "*/*" }
43+
?: filename.getMimeType()
4044
val inputStream = contentResolver.openInputStream(source)
41-
val filename = source.toString().getFilenameFromPath()
4245

4346
val destinationPath = "$destination/$filename"
4447
val outputStream = getFileOutputStreamSync(destinationPath, mimeType, null)!!

0 commit comments

Comments
 (0)