mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-19 07:15:25 +02:00
feat: Add rememberFileSaverDialog
This commit is contained in:
parent
cabca2bb54
commit
35c59754b5
31
app/src/main/java/app/myzel394/locationtest/ui/utils/file.kt
Normal file
31
app/src/main/java/app/myzel394/locationtest/ui/utils/file.kt
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
package app.myzel394.locationtest.ui.utils
|
||||||
|
|
||||||
|
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.platform.LocalContext
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun rememberFileSaverDialog(mimeType: String): ((File) -> Unit) {
|
||||||
|
val context = LocalContext.current
|
||||||
|
|
||||||
|
var file: File? = null
|
||||||
|
|
||||||
|
val launcher = rememberLauncherForActivityResult(contract = ActivityResultContracts.CreateDocument(mimeType)) {
|
||||||
|
it?.let {
|
||||||
|
context.contentResolver.openOutputStream(it)?.use { outputStream ->
|
||||||
|
file!!.inputStream().use { inputStream ->
|
||||||
|
inputStream.copyTo(outputStream)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
file = null
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
file = it
|
||||||
|
launcher.launch(it.name)
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user