
Android Kotlin Permission - registerForActivityResult
Notepad96
·2022. 4. 26. 23:56
1. 결 과
# 이 글은 애플리케이션에서 필요한 권한을 요청하고 확인하여 권한 허용 여부의 따른 동작을 설정하는 방법을 기존과는 다르게 registerForActivityResult를 사용하여 기존보다 더욱 간단한 방법으로 권한을 요청할 수 있는 방법을 기술한다.
2. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.permissionsexample02">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
...
</manifest>
# 추가하고자 하는 권한을 매니페스트 파일서 추가해준다.
# 해당 예시에서는 Camera와 External_Storage read/wirte 권한을 추가
3. MainActivity.kt
package com.example.permissionsexample02
import android.Manifest
import android.os.Bundle
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
// 권한 요청
private val requestMultiplePermission = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { results ->
results.forEach {
if(!it.value) {
Toast.makeText(applicationContext, "${it.key} 권한 허용 필요", Toast.LENGTH_SHORT).show()
finish()
}
}
}
// 추가할 권한들, 매니페스트 파일서도 추가 필요
private val permissionList = arrayOf(
Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
requestMultiplePermission.launch(permissionList)
}
}
# requestMultiplePermission이라는 registerForActivityResult를 선언한다.
# registerForActivityResult 내부에서는 결과값(results)에 따른 동작을 정의한다.
해당 예시에서는 결과값이 false일 경우 (즉, 사용자가 권한을 거부하였을 경우)에는 권한이 필요하다는 toast 메시지를 출력하면서 Application을 자동으로 종료되도록 구현하였다.
# permissionList는 배열로서 권한들을 한곳에 묶어서 관리한다.
# 위에서 선언하였던 requestMultiplePermission의 launch를 요청하고자 하는 권한 리스트인 permissionList를 파라미터로 주어 권한을 요청한다.
4. 전체 코드
GitHub - Notepad96/BlogExample
Contribute to Notepad96/BlogExample development by creating an account on GitHub.
github.com
'Android' 카테고리의 다른 글
[Android][Kotlin] 이미지 불러오기 - registerForActivityResult, coil (0) | 2022.04.30 |
---|---|
Android Kotlin coil - 이미지 로딩 라이브러리 (0) | 2022.04.28 |
Android Kotlin Image Full Screen - 이미지 클릭 시 확대 (0) | 2022.02.22 |
Android Loading Animation - ContentLoadingProgressBar (0) | 2022.02.10 |
Android Kotlin Number Picker Dialog - 숫자 선택 창 (0) | 2022.02.07 |