Kotlin을 이용한 앱개발 중 프로필사진을 설정하기 위한 갤러리 이미지 접근이 필요했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
imageResult = registerForActivityResult( //oncreate에서만 정의가능 -> 모듈화 불가능
ActivityResultContracts.StartActivityForResult()
){
result ->
if(result.resultCode == RESULT_OK){ // 이미지를 선택하면..
progressOff()
//uri형태로 받아온 데이터 저장
val imageUri = result.data?.data
imageUri.let{
imageFile = File(getRealPathFromURI(it!!)) //서버 업로드를 위한 파일형태 변경
Glide.with(this) //이미지 적용
.load(imageUri)
.circleCrop()
.into(findViewById(R.id.profileImage))
}
}else { //갤러리창에서 뒤로가기할 시
progressOff()
}
}
|
cs |
먼저 해당 코드를 작성하였다. 해당코드는 갤러리에서 이미지를 불러왔을 시 Glide를 통하여 이미지를 적용하는 코드이다.
해당 코드에서 progressOff함수는 이미지를 선택하려 갤러리에 접근 시 실행되는 어플 조작방지 로딩바를 종료시키는 코드이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
private fun selectGallery(){
progressOn()
val readPermission = ContextCompat.checkSelfPermission(this,
android.Manifest.permission.READ_EXTERNAL_STORAGE)
if(readPermission == PackageManager.PERMISSION_DENIED) { //권한이 없을 시 권한 요청
ActivityCompat.requestPermissions(
this,
arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE), REQ_GALLERY
)
}else{
//권한이 있을 경우 갤러리 실행
val intent = Intent(Intent.ACTION_PICK)
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*")
imageResult.launch(intent)
}
}
|
cs |
해당 함수는 갤러리에 접근하는 함수이다. 먼저 갤러리 접근시 어플조작을 방지하기 위해 progressOn함수를 실행시킨다.
이후 권한을 읽어들여 권한이 없을 시 요청하고 있을 시 갤러리를 실행시킨 후 데이터를 받아온다.
'Android' 카테고리의 다른 글
[Compose] viewmodel을 다른 Screen에서 공유하기 (0) | 2024.05.19 |
---|---|
[Compose] Splash Screen 및 초기 데이터 로딩 (0) | 2024.05.17 |
[Kotlin오류] NavController오류 (does not have a NavController set on 2131230920) 해결법 (0) | 2023.06.17 |
[Kotlin 오류] unknown kotlin jvm target: 20 원인과 해결법 (0) | 2023.05.29 |