Skip to content

Commit ee9210c

Browse files
committed
add handling for file saving from Send intent
1 parent bdefac5 commit ee9210c

File tree

1 file changed

+38
-1
lines changed
  • app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities

1 file changed

+38
-1
lines changed

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/SaveAsActivity.kt

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,54 @@
11
package com.simplemobiletools.filemanager.pro.activities
22

33
import android.content.Intent
4+
import android.net.Uri
45
import android.os.Bundle
5-
import com.simplemobiletools.commons.extensions.toast
6+
import com.simplemobiletools.commons.dialogs.FilePickerDialog
7+
import com.simplemobiletools.commons.extensions.*
8+
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
69
import com.simplemobiletools.filemanager.pro.R
10+
import com.simplemobiletools.filemanager.pro.extensions.config
11+
import java.io.File
712

813
class SaveAsActivity : SimpleActivity() {
914
override fun onCreate(savedInstanceState: Bundle?) {
1015
super.onCreate(savedInstanceState)
1116
setContentView(R.layout.activity_save_as)
1217

1318
if (intent.action == Intent.ACTION_SEND && intent.extras?.containsKey(Intent.EXTRA_STREAM) == true) {
19+
FilePickerDialog(this, pickFile = false, showHidden = config.shouldShowHidden, showFAB = true) {
20+
val destination = it
21+
handleSAFDialog(destination) {
22+
toast(R.string.saving)
23+
ensureBackgroundThread {
24+
try {
25+
if (!getDoesFilePathExist(destination)) {
26+
if (needsStupidWritePermissions(destination)) {
27+
val document = getDocumentFile(destination)
28+
document!!.createDirectory(destination.getFilenameFromPath())
29+
} else {
30+
File(destination).mkdirs()
31+
}
32+
}
1433

34+
val source = intent.getParcelableExtra<Uri>(Intent.EXTRA_STREAM)
35+
val mimeType = source!!.toString().getMimeType()
36+
val inputStream = contentResolver.openInputStream(source)
37+
val filename = source.toString().getFilenameFromPath()
38+
39+
val destinationPath = "$destination/$filename"
40+
val outputStream = getFileOutputStreamSync(destinationPath, mimeType, null)!!
41+
inputStream!!.copyTo(outputStream)
42+
rescanPaths(arrayListOf(destinationPath))
43+
toast(R.string.file_saved)
44+
finish()
45+
} catch (e: Exception) {
46+
showErrorToast(e)
47+
finish()
48+
}
49+
}
50+
}
51+
}
1552
} else {
1653
toast(R.string.unknown_error_occurred)
1754
finish()

0 commit comments

Comments
 (0)