IT BLOG

Dexter 사용법 – 안드로이드 퍼미션 라이브러리

안드로이드 강의 들으면서 Dexter 라는 것이 나와서 좀 더 알아보려고 한다.

Dexter

안드로이드 앱 권한 요청을 쉽게 할 수 있도록 도와주는 라이브러리이다.

요런 느낌으로 구현이 된다.

Dependency

dependencies{
    implementation 'com.karumi:dexter:6.2.3'
}

karumi:dexter 이다.

Permission

크게는 Single Permission이랑 Multiple Permissions 로 나뉜다.

단일 권한만 요청 할 때는 Single을 쓰면 되겠지만

보통은 권한 여러개를 요청하기 때문에 Multiple Permissions 위주로 다뤄보겠다.

Multiple Permissions

Dexter.withContext(this)
	.withPermissions(
		Manifest.permission.CAMERA,
		Manifest.permission.READ_CONTACTS,
		Manifest.permission.RECORD_AUDIO
	).withListener(new MultiplePermissionsListener() {
	    @Override public void onPermissionsChecked(MultiplePermissionsReport report) {/* ... */}
	    @Override public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {/* ... */}
	}).check();

깃허브에 있는 예제코드이다.

withPermissions 랑 withListener 만 주의깊게 보면 된다.

withPermissions엔 보면 익숙할텐데 얻고자 하는 권한들을 써주면 되고

withListener는 그 권한의 리스너들이다.

리스너에 구현해야 하는 메소드는 2개이다.

  • onPermissionsChecked
  • onPermissionRationaleShouldBeShown

요렇게 2개

onPermissionsChecked 은 권한을 다 묻고 나서 호출이 되고 (허용이든 아니든)

onPermissionRationaleShouldBeShown 는 이전에 사용자가 한 번 권한을 거부 했으면 호출이 된다.

onPermissionsChecked 의 경우 MultiplePermissionsReport 요걸 전달받게 되는데

MultiplePermissionsReport 은 권한 획득/권한 거부와 같은 자세한 정보를 담고 있다.

예를 들면

MultiplePermissionsReport 의 areAllPermissionsGranted 는 모든 권한이 주어졌으면 true를 아니면 false를 리턴할 것이다.

onPermissionRationaleShouldBeShown 구현은

각자 마음대로 할 수 있지만

@Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
	token.continuePermissionRequest();
}

요렇게 구현을 하면 그냥 다시 권한 요청을 할 수 있다.

listener 스레드

Dexter.withContext(context)
	.withPermission(permission)
	.withListener(listener)
	.onSameThread()
	.check();

깃허드 예제 코드에 보면 onSameThread() 를 호출한다.

이거는 같은 스레드에서 listener 콜백을 받고 싶으면 붙이면 된다.


게시됨

카테고리

작성자

태그: