본문 바로가기
Android Jetpack Compose/Jetpack Compose

Jetpack Compose 에서 Activity Result 가져오기 # rememberLauncherForActivityResult

by Developer88 2022. 11. 21.
반응형

오늘은 Jetpack Compose 에서 Acitivity Result를 가져오는 방법에 대해서 정리해 보도록 하겠습니다.

 

1. rememberLauncherForActivityResult 

이전에는 Activity에서 다른 Activity로부터 결과값을 가져올 때 registerForActivityResult를 사용하였습니다.

이와 관련해서는 아래 글을 참조해 주시면 됩니다.

 

>> registerForActivityResult 구현방법 정리 # 예전 onActivityResult

 

Jetpack Compose에서 갤러리에서 이미지등을 가져오려면 registerForActivityResult가 아니라,

rememberLauncherForActivityResult API를 사용해 주어야 합니다.

이 API는 아래와 같이 첫번째 인자로 ActivityResultContract 객체를 넣어주어야 하구요.

결과값의 콜백을 두번째 인자로 넘겨주므로, 이를 구현해서 사용하기만 하면 됩니다.

 

 

API설명에 구현예까지 자세히 나와있네요.

아래에서 갤러리에서 이미지를 가져오는 것에 대해서 구현해 보겠습니다.

 

2. 구현

rememberLauncherForActivityResult API구현은 워낙 간단한데요.

먼저 아래와 같이 launcher를 만들어 줍니다.

위에서 본 것처럼, 두번째 인자로 콜백을 넘겨주므로 이를 구현해 주면 되는데요.

 

 

 

 

위에서 사용하였던 GetContent()는 ActivityResultContracts의 객체입니다.

첫번째 인자로 ActivityResultContracts객체가 필요한데, 저희는 유저로부터 이미지 컨텐츠를 받아와야하기 때문에,

이를 선택할 수 있도록 해주는 Contracts클래스의 객체를 사용하였습니다.

 

 

이제 버튼에서 아래와 같이 Mime타입을 정해서 launch를 해 주기만 하면 됩니다.

 

 

이렇게 하면 galleryLauncher에 uri가 들어오게 되고, 그것을 원하는대로 가공해서 사용하기만 하면 됩니다.

 

이상으로 rememberLauncherForActivityResult 를 이용해서 Activity Result를 가져오는 방법에 대해서 정리해 보았습니다.

 

728x90

댓글