Ответ
Для возврата результата из другого приложения используйте startActivityForResult() (или registerForActivityResult с новым API). В вызываемом приложении установите результат через setResult() перед finish().
Пример в вызывающем активити:
val intent = Intent(Intent.ACTION_PICK)
startActivityForResult(intent, REQUEST_CODE)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
val result = data?.getStringExtra("key")
}
}
В вызываемом активити:
val resultIntent = Intent().apply {
putExtra("key", "result data")
}
setResult(RESULT_OK, resultIntent)
finish()
Для нового API (Activity Result API):
val launcher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == RESULT_OK) {
val data = result.data?.getStringExtra("key")
}
}
launcher.launch(intent)