получение результата от 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)
            }}
    // ...
}

Для других решений вы можете передать объект для хранения значения

Другие вопросы по тегам