получение результата от LauncherForActivityResult
Я немного застрял в функции, которую пишу.
У меня есть функция, которая вызывает другое приложение, которое я написал, и должна возвращать логическое значение.
@Composable
fun callApp(
//someparams
) : Boolean {
//some code
}
после некоторой логики я запускаю свое приложение через:
val startForResult =
rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
if (result.resultCode == Activity.RESULT_OK) {
//here i need to set the return value of "callApp"
}}
И запустить его
startForResult.launch(launchIntent)
Проблема в том, что я не вижу способа вернуть логическое значение, сгенерированное в результате функцией callApp. Обратите внимание, что я не могу использовать sharedPref/realm/любую структуру данных, внешнюю по отношению к самому коду.
Можете ли вы помочь мне понять это?
1 ответ
Лучше всего просто сделать обратный вызов для завершения намерения, а не возвращать значение из компонуемого/сохраняющего его где-то
@Composable
fun callApp(
//someparams,
onIntentFinished: (Boolean) -> Unit
) {
// ...
val startForResult =
rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
if (result.resultCode == Activity.RESULT_OK) {
//here i need to set the return value of "callApp"
onIntentFinished(true)
}}
// ...
}
Для других решений вы можете передать объект для хранения значения