[Kotlin]안드로이드 권한 요청
권한요청은 JAVA 버전도 만들었었지만 이번에 개발하는 Kotlin(이하 코틀린)에서 사용할 권한 요청을 정리해 보았습니다. (JAVA는 추후에 다시)
1. JAVA와 동일하게 AndroidManifest.xml에서 권한을 요청할 permission을 지정해줍니다.
예 ) <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//저장소 쓰기에 대한 권한 요청
2. PermissionCheck Class (아래 소스코드 참고)
class PermissionCheck(val permissionActivity: Activity, val requirePermissions: Array<String>) {
private val permissionRequestCode = 100
//권한 체크용
public fun permissionCheck() {
var failRequestPermissionList = ArrayList<String>()
for(permission in requirePermissions) {
if(ContextCompat.checkSelfPermission(permissionActivity.applicationContext, permission) != PackageManager.PERMISSION_GRANTED) {
failRequestPermissionList.add(permission)
}
}
if(failRequestPermissionList.isNotEmpty()) {
val array = arrayOfNulls<String>(failRequestPermissionList.size)
ActivityCompat.requestPermissions(permissionActivity, failRequestPermissionList.toArray(array), permissionRequestCode)
}
}
}
- 첫번째 매개변수는 Activity를 넘겨받으며, 두번째 매개변수는 Array 즉, 권한요청할 permission의 배열을 받아옵니다.
- permissionCheck 함수를 돌려주면 permission 배열내에서 권한승인이 되지않은 권한을 모드 failRequestPermissionList 로 담아줍니다. 담아준 결과는 Empty 즉, 빈값이 아니라면 권한을 요청하게됩니다.
3. 실행할 위치에 권한요청할 permission의 Array를 생성해주고(아래 requestPermissions), PermissionCheck 클래스의 permissionCheck 함수를 실행해줍니다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var requestPermissions = arrayOf(
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
val permissionCheck = PermissionCheck(this, requestPermissions)
permissionCheck.permissionCheck()
}
** 만일 permissionCheck 함수를 실행하지 않고 바로 실행하고 싶다면 init 활용 (아래 참조)
class PermissionCheck(val permissionActivity: Activity, val requirePermissions: Array<String>) {
private val permissionRequestCode = 100
//권한 체크용
init {
var failRequestPermissionList = ArrayList<String>()
for(permission in requirePermissions) {
if(ContextCompat.checkSelfPermission(permissionActivity.applicationContext, permission) != PackageManager.PERMISSION_GRANTED) {
failRequestPermissionList.add(permission)
}
}
if(failRequestPermissionList.isNotEmpty()) {
val array = arrayOfNulls<String>(failRequestPermissionList.size)
ActivityCompat.requestPermissions(permissionActivity, failRequestPermissionList.toArray(array), permissionRequestCode)
}
}
}
-> 사용시에는 아래처럼 PermissionCheck 클래스에 매개변수만 담아주면 권한체크가 실행됩니다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var requestPermissions = arrayOf(
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
PermissionCheck(this, requestPermissions)
}
*** Reference : https://developer.android.com/training/permissions/requesting?hl=ko
*** 소스에 문제가 있을 시 댓글 달아주시면 최신화하도록하겠습니다.
'컴퓨터 이야기 > Android' 카테고리의 다른 글
[Java]안드로이드 권한요청 class (0) | 2020.06.12 |
---|---|
[Kotlin, JAVA]밀리세컨드 단위 시간 구하기 (0) | 2020.04.27 |
[Kotlin]Handler 이용하여 메인 UI 건드리기 (2) | 2020.04.27 |
[Kotlin]Toast 사용하기 (0) | 2020.04.23 |
[Kotlin]Activity 전체화면 처리 (0) | 2020.04.23 |