퍼미션
앱의 컴포넌트를 외부의 허가 없는 접근으로부터 보호하는 기능.
컴포넌트를 보호하기 위해서는 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.
'개발자 지식 > 안드로이드' 카테고리의 다른 글
[안드로이드] 커스텀 다이얼로그에서 값 가져오기 (0) | 2020.09.15 |
---|---|
[안드로이드] 커스텀 다이얼로그를 만드는 방법 (0) | 2020.09.15 |
[안드로이드] 태스크와 백스택 정리 (0) | 2020.09.11 |
[안드로이드] 액티비티 생명주기 정리 (0) | 2020.09.11 |
[안드로이드] 앱바레이아웃(appbarlayout) 정리 (0) | 2020.09.11 |