안드로이드

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

디벨로펄 2023. 1. 27. 00: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")
        }
    }
}
반응형