퍼미션

 

앱의 컴포넌트를 외부의 허가 없는 접근으로부터 보호하는 기능.

컴포넌트를 보호하기 위해서는 AndroidManifest.xml<permission>을 선언해야 한다.

접근하고 사용하기 위해서는 <uses-permission> AndroidManifest.xml에 선언해야 한다.

 

시스템 퍼미션!

앱의 사용자에게 앱의 기능을 알려주는 역할을 한다.

사용하고 싶은 기능을 마찬가지로 AndroidManifest.xml<uses-permission>에 선언해야 한다.

기능을 찾고 싶으면 개발자 문서에 들어가 찾아보면 된다.

 

런타임 퍼미션!

프로텍션 레벨 : 보호를 어느 수준으로 하느냐? Dangerous 레벨만 허가를 받아야 한다.

Normal 레벨은 <uses-permission> 선언 없이도 사용 가능한 기능이다.

 

퍼미션 부여 여부 메서드 : checkSelfPermission(context, 퍼미션 이름) == PackageManager.PERMISSION_GRANTED / DENIED ;

두 번째 매개변수는 퍼미션의 이름. 반환값은 PERMISSION_GRANTED / PERMISSION_DENIED.

그 다음, 퍼미션 요청 메서드 requestPermissions(activity, 퍼미션 이름, requestCode);

// 여러 개의 퍼미션을 동시에 요청할 수 있는데, 그때는 new String[]{Manifest.permission.퍼미션이름, … } 해서 나열을 한다. 알아서 그룹으로 묶어 화면에 출력되니 걱정ㄴ

퍼미션 요청 결과 확인 콜백 메서드

onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

        if(requestCode == 100 && grantResults.length > 0) à grantResults의 값이 존재하느냐, 하않느냐? 존재해야만 한다는 조건을 건 것. 예를 들어 권한 다이얼로그 창에서 사용자가 뒤로가기를 누른다면 이벤트 처리가 제대로 되지 않을 것이다. 참고로 GRANTED=0, DENIED-1.