반응형
Notice
Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- hung-up
- gradle
- JNI
- socket-client
- 오즈뷰어
- socket.io
- git
- git-push
- 워치
- AWS
- google-login
- socket-server
- firebase-storage
- mqtt
- cloud-firestore
- Kotlin
- ActivityResult-API
- ozd
- firebase-database
- mosquitto
- Flavors
- Dva
- Galaxy Watch
- NoSuchMethodError
- Android
- TIZEN
- OZViewer
- BottomSheetDialog
- Firebase
- Java8
Archives
- Today
- Total
Hyeyeon blog
[Android] onActivityResult를 대체하는 ActivityResult API 본문
반응형
새로운 액티비티를 띄울 때와 퍼미션을 요청할 때 사용되었던 startActivity, requestPermission을
간결하게 대체할 수 있는 ActivityResult API 입니다.
기존에는 onActivityResult에서 requestCode에 따라 케이스를 나누어 결과 값을 처리했다면
이제는 각 케이스 별로 콜백을 나누어 받아 처리하여 더욱 명시적인 코드를 작성할 수 있습니다.
dependency 추가
- 최신 버전은 [링크]에서 확인하실 수 있습니다.
implementation 'androidx.activity:activity-ktx:1.2.0-alpha05'
startActivityForResult 대체
1. 기존 방식 (startActivityForResult 사용)
val intent = Intent(this, TestActivity::class.java)
startActivityForResult(intent, 10001)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(requestCode == 10001){
...
}
}
2. ActivityResult API 사용
val activityLauncher: ActivityResultLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
activityResult: ActivityResult ->
// activityResult 처리
}
activityLauncher.launch(Intent(this, TargetActivity::class.java))
requestPermission 대체
1. 기존 방식 (requestPermission 사용)
val permission = android.Manifest.permission.CAMERA
requestPermissions(arrayOf(permission), 10001)
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if(requestCode == 10001){
...
}
}
2. ActivityResult API 사용
val permissionLauncher: ActivityResultLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
isGranted: Boolean ->
// 퍼미션 허용 여부 값 처리
}
val permission = android.Manifest.permission.CAMERA
permissionLauncher.launch(permission)
관련 글
728x90
'개발 > Android' 카테고리의 다른 글
[Android] JNI를 이용해 안드로이드에서 c파일 사용하기 (0) | 2021.02.01 |
---|---|
[Android] Socket.io를 이용하여 소켓 서버와 안드로이드 앱 통신하기 (0) | 2020.12.11 |
[Android] 화면 잠금 상태 여부 가져오기 (0) | 2020.11.30 |
[Android] Api key를 노출시키지 않고 안전하게 사용하는 방법 (0) | 2020.11.29 |
[Android] java.lang.NoSuchMethodError: No static method metafactory (0) | 2020.11.27 |
Comments