안드로이드 앱에서 기존 사진을 가져오는 방법으로 다음 두 가지가 있습니다.
1. 기본 갤러리 앱 사용
2. 커스텀 갤러리 화면 만들기
이번에는 기본 갤러리 앱을 사용해 사진을 가져오도록 해보겠습니다.
암시적 Intent를 사용하면 쉽게 갤러리 앱을 사용할 수 있습니다.
1. 기본 갤러리 앱 실행
Intent 객체를 생성하고 갤러리 액티비티 실행하기 위한 정보를 Setting 합니다.
startActivityForResult의 두 번째 인자로 나중에 확인을 위한 request Code 값을 넣습니다.
private fun startDefaultGalleryApp() {
val intent = Intent()
intent.type = "image/*"
intent.action = Intent.ACTION_GET_CONTENT
startActivityForResult(intent, DEFAULT_GALLERY_REQUEST_CODE)
}
2. 갤러리 앱 실행 결과 처리하기
// 갤러리 화면에서 이미지를 선택한 경우 현재 화면에 보여준다.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode != Activity.RESULT_OK) {
return
}
when (requestCode) {
DEFAULT_GALLERY_REQUEST_CODE -> {
data?:return
val uri = data.data as Uri
// 이미지 URI를 가지고 하고 싶은거 하면 된다.
}
else -> {
Toast.makeText(this, "사진을 가져오지 못했습니다.", Toast.LENGTH_SHORT).show()
}
}
}
갤러리 액티비티로부터 결과 데이터를 처리하기 위해서는 onActivityResult() 함수를 오버 라이딩합니다.
해당 함수의 인자는 3개입니다.
첫 번째 인자 RequestCode는 startActivityForResult() 함수의 두 번째 인자로 넘겨줬던 값과 동일한 값이 넘어옵니다.
두 번째 인자는 resultCode로 사진을 정상적으로 선택하였다면 RESULT_OK 값이 넘어오며 뒤로 가기 버튼으로 작업을 취소한 경우 RESULT_CANCELED 값이 넘어옵니다. 해당 코드값을 확인하여 액티비티에서 적절한 처리를 해주면 됩니다.
마지막 세 번째 인자로 갤러리 액티비티로부터 넘어온 결과 데이터가 담겨있는 Intent 객체입니다.
결론 : 커스텀 갤러리 화면을 만들자!
구현 로직이 간단한 것을 알 수 있습니다. 실제 유명 서비스(카카오톡, 페북, 인스타...)의 경우 이렇게 기본 갤러리 앱을 사용하는 경우는 거의 없는데요. 서비스 성격에 맞게 각각의 갤러리 화면을 만들어서 사용합니다.
다음 편에서는 커스텀 갤러리 화면을 만들어 보겠습니다.
기본 갤러리, 커스텀 갤러리 전체 소스를 확인할 수 있습니다.
https://github.com/keepseung/Android-Blog-Source
'Android > 개념 및 예제' 카테고리의 다른 글
안드로이드 권한 (런타임 퍼미션) 요청하기 [Kotlin] (0) | 2021.09.29 |
---|---|
Android 소리나는 카운트 다운 타이머 만들기 (CountdownTimer + SoundPool) (0) | 2021.09.26 |
SharedPreference로 데이터 저장하기 (0) | 2021.05.18 |
안드로이드 데이터 및 파일 저장소 개요 및 내부 저장소 사용하기 (0) | 2021.05.18 |
안드로이드 퍼미션 개념 정리 (0) | 2021.05.18 |