안드로이드

[안드로이드] Permission - 권한 확인하기(checkSelfPermission)(feat. Kotlin)

디벨로펄 2023. 1. 27.
반응형

차근차근 가보자.

 

특정 기능을 실행시키기 위한 권한을 사용자가 이미 허용했는지 안했는지확인하는 방법에 대해서 알아보자.

(본 단계 진행을 위해서는 Manifest에 권하는 권한에 대해 추가를 해야한다.)

권한 확인 : checkSelfPermission
public static int checkSelfPermission(@NonNull Context context, @NonNull String permission)

 ContextCompat.checkSelfPermission()메서드에 확인 원하는 권한 전달→

권한 여부에 따라

PERMISSION_GRANTED(=0)

PERMISSION_DENIED(=-1)

을 리턴한다.

 

-- 권한 확인

private const val PERMISSION_WRITE_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE;

fun verifyStoragePermissions(activity: Activity) {
    var permission = 0
    // Check if we have write permission
    permission = ActivityCompat.checkSelfPermission(
        activity,
        PERMISSION_WRITE_STORAGE
    )
    // 권한 확인 결과 print
    println("Storage permission : $permission")
}

-- 현재 어플리케이션은 카메라에 대해서는 권한을 허용했지만, 저장소 접근 권하는 허용하지 않은 상태이다.

따라서 아래 코드 실행 로그는 다음과 같다.

PermissionManager.Companion.verifyStoragePermissions(this); // permission check
PermissionManager.Companion.verifyCameraPermissions(this);

I/System.out: Storage permission : -1
I/System.out: Camera permission : 0

 

Permission을 관리하는 class

더보기
class PermissionManager {
    companion object{
        private const val PERMISSION_WRITE_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE;
        private const val PERMISSION_CAMERA = Manifest.permission.CAMERA;

        fun verifyStoragePermissions(activity: Activity) {
            var permission = 0
            // Check if we have write permission
            permission = ActivityCompat.checkSelfPermission(
                activity,
                PERMISSION_WRITE_STORAGE
            )
            println("Storage permission : $permission")
        }
        fun verifyCameraPermissions(activity: Activity){
            var permission = 0
            // Check if we have write permission
            permission = ActivityCompat.checkSelfPermission(
                activity,
                PERMISSION_CAMERA
            )
            println("Camera permission : $permission")
        }
    }
}
반응형

댓글