티스토리 뷰
권한을 확인할 권한 목록은 아래와 같이 작성한다.
var permission_list = arrayOf(
Manifest.permission.CAMERA,
Manifest.permission.READ_PHONE_STATE
// 기타 등등
)
권한을 확인할 때는 메소드 하나 만들자.
fun checkPermission(){
//버전 확인
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M){
return
}
//버전 마시멜로우 이상일 때
for(permission in permission_list){
//권한 중 없는 게 있는 지 확인한다.
var chk = checkSelfPermission(Manifest.permission.CAMERA)
//없는 게 있으면 팝업으로 권한을 물어본다.
if(chk == PackageManager.PERMISSION_DENIED){
requestPermissions(permission_list, 0)
break
}
}
}
권한 설정 직후 작업을 하고자 할 때 사용되는 메소드 onRequestPermissionResult
//권한 팝업 창 사라진 후 자동으로 호출, 그 뒤 작업을 작성
//권한 다 허용되면 이 작업은 이루어지지 않음
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray) {
//파라미터 permissions -> 체크한 권한들 배열.. grantResults -> 해당 권한이 grant 되어있는지
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
//배열에서 권한결과 확인
for (idx in grantResults.indices) {
//.indices 하면 인덱스 번호가 들어오게 된다...
var p = permission_list[idx]
if (grantResults[idx] == PackageManager.PERMISSION_GRANTED) {
binding.textView.append("${p} 허용")
} else {
binding.textView.append("${p} 허용 X")
}
}
}
이렇게 하고나면 결과는
android.permission.권한이름 허용
or
android.permission.권한이름 허용 X
라고 나타난다.
모든 권한이 다 승인된 후 앱을 다시 껐다 켜면 메소드가 실행되지 않음
728x90
'#1 > Android' 카테고리의 다른 글
[Android] requireActivity (0) | 2021.05.14 |
---|---|
비트맵 (0) | 2021.05.14 |
[Android/Kotlin] for문 (0) | 2021.05.10 |
[Android] Navigation 내비게이션 (0) | 2021.05.07 |
[Android] Activity, Fragment Activity (0) | 2021.05.07 |
댓글