mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-18 23:05:26 +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