[Marshmallow] 권한 요청 방법

2019. 6. 8. 11:40·IT기술 관련/모바일
반응형

출처:https://ykyh.tistory.com/4


우선 안드로이드M 이 공개 되면서 여러 변경되거나 추가된 내용 중에서 개인적으로 개발자가 가장 신경써야 할 부분은 "권한"에 대한 부분이라고 생각되어 퍼미션에 대해 제일 먼저 다루겠습니다.


Android Developer

우선 자세한 내용은 Android Developer 사이트에서 자세히 설명해 주고 있고, 안드로이드M에 대해서는 무려 한글페이지를 제공해 주고 있습니다!!!!!!!!!!!!!!!

http://developer.android.com/intl/ko/preview/features/runtime-permissions.html


안드로이드M 이하 버전의 경우 특정 기능을 사용하기 위해서 <uses-permission..>만 정의 하고 설치 시 안드로이드 인스톨러에서 사용자에게 고지 하도록 되어 있습니다.시 안드로이드 인스톨러에서 사용자에게 고지 하도록 되어 있습니다., 


안드로이드M 에서는 퍼미션을 사용하는 시점에 사용자에게 퍼미션 사용여부를 고지 하고 사용자가 동의해야만 사용할 수 있습니다

모든 퍼미션이 이렇게 사용해야 되는 것은 아니고, 개인정보와 관련된 몇몇 퍼미션에 관해서 별도의 처리를 해줘야 합니다.


Developer 사이트에 정의되어있는 별도로 퍼미션 처리를 해줘야하는 퍼미션은 다음과 같습니다.


권한 그룹권한
android.permission-group.CALENDAR
  • android.permission.READ_CALENDAR
  • android.permission.WRITE_CALENDAR
android.permission-group.CAMERA
  • android.permission.CAMERA
android.permission-group.CONTACTS
  • android.permission.READ_CONTACTS
  • android.permission.WRITE_CONTACTS
  • android.permission.READ_PROFILE
  • android.permission.WRITE_PROFILE
android.permission-group.LOCATION
  • android.permission.ACCESS_FINE_LOCATION
  • android.permission.ACCESS_COARSE_LOCATION
android.permission-group.MICROPHONE
  • android.permission.RECORD_AUDIO
android.permission-group.PHONE
  • android.permission.READ_PHONE_STATE
  • android.permission.CALL_PHONE
  • android.permission.READ_CALL_LOG
  • android.permission.WRITE_CALL_LOG
  • com.android.voicemail.permission.ADD_VOICEMAIL
  • android.permission.USE_SIP
  • android.permission.PROCESS_OUTGOING_CALLS
android.permission-group.SENSORS
  • android.permission.BODY_SENSORS
  • android.permission.USE_FINGERPRINT
android.permission-group.SMS
  • android.permission.SEND_SMS
  • android.permission.RECEIVE_SMS
  • android.permission.READ_SMS
  • android.permission.RECEIVE_WAP_PUSH
  • android.permission.RECEIVE_MMS
  • android.permission.READ_CELL_BROADCASTS


개발 방법

테스트로 아래의 두 퍼미션을 정의하며, "android.permission.CALL_PHONE" 의 경우 사용자의 확인이 필요한 퍼미션이고, "android.permission.ACCESS_WIFI_STATE"의 경우 확인이 필요 없는 퍼미션 입니다.


<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>


앱을 설치 하고 안드로이드 설정에서 애플리케이션에셔 보면 CALL_PHONE 에 관해서는 사용자가 퍼미션을 ON/OFF 처리 할 수 있도록 되있습니다. 

 

이제 우리가(개발자들) 해야할일이 생겼죠...!

1. 설정에서 퍼미션 사용이 ON으로 되어있는지 확인

 - checkSelfPermission(String permission)


2. 퍼미션 사용 요청

 - requestPermissions(String[] permissions, int requestCode)

requestPermissions 메서드를 호출 하면 팝업이 뜨면서 사용자에게 퍼미션을 허용을 요청 하게 됩니다.

사용자가 동의 버튼을 선택 할 경우 앱 설정에 퍼미션이 ON으로 바뀌게 됩니다.


 


3. 사용자 응답에 따른 결과 받기

 -  onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)

PERMISSION_GRANTED 응답을 받았다면, 요청한 퍼미션에 대한 작업을 하시면 됩니다.


예제 소스

아래 테스트 예제를 보시면 쉽게 이해 되실겁니다.


 private final int MY_PERMISSIONS_REQUEST_CALL_PHONE = 1000;

private View.OnClickListener buttonListener = new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        switch (view.getId()) {
            case R.id.BT_CALL_PHONE :

                if (checkSelfPermission(Manifest.permission.CALL_PHONE)
                        != PackageManager.PERMISSION_GRANTED) {
                    requestPermissions(new String[]{Manifest.permission.CALL_PHONE},
                            MY_PERMISSIONS_REQUEST_CALL_PHONE);
                    return;
                } else {
                    callPhone();
                }
                break;

            default:
                break;
        }

    }
};

@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_CALL_PHONE: {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! do the
                // calendar task you need to do.
                callPhone();
            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
                Toast.makeText(this, "NOT GRANTED", Toast.LENGTH_LONG).show();
            }
            return;
        }

        // other 'switch' lines to check for other
        // permissions this app might request
    }
}
private void callPhone() {
    Intent i = new Intent(Intent.ACTION_CALL, Uri.parse("tel:010-1234-5678"));
    startActivity(i);
}

 



출처: https://ykyh.tistory.com/4 [요콩 공부방]



반응형

'IT기술 관련 > 모바일' 카테고리의 다른 글

android kotlin - WebView example -안드로이드 코틀린 웹뷰  (0) 2019.06.14
안드로이드 스튜디오 - GitHub 연동과 add, commit, push 개념  (0) 2019.06.11
unresolved reference for ViewModelProviders  (0) 2019.06.01
안드로이드 개발에 도움 됬던 사이트들  (0) 2019.05.27
[안드로이드 스튜디오] Plugin with id 'com.android.application' not found  (0) 2019.05.25
'IT기술 관련/모바일' 카테고리의 다른 글
  • android kotlin - WebView example -안드로이드 코틀린 웹뷰
  • 안드로이드 스튜디오 - GitHub 연동과 add, commit, push 개념
  • unresolved reference for ViewModelProviders
  • 안드로이드 개발에 도움 됬던 사이트들
호레
호레
창업 / IT / 육아 / 일상 / 여행
    반응형
  • 호레
    Unique Life
    호레
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 법률
        • 기본
        • 개인정보보호법
        • 정보통신망법
        • 전자금융거래법
        • 전자금융감독규정
        • 신용정보법
        • 온라인투자연계금융업법
      • 창업
        • 외식업 관련
        • 임대업 관련
        • 유통업 관련
        • 세무 관련
        • 마케팅 관련
        • 기타 지식
        • 트렌드
        • Youtube
      • IT기술 관련
        • 모바일
        • 윈도우
        • 리눅스
        • MAC OS
        • 네트워크
        • 빅데이터 관련
        • A.I 인공지능
        • 파이썬_루비 등 언어
        • 쿠버네티스
        • 기타 기술
      • 퍼블릭 클라우드 관련
        • Azure
        • GCP
        • AWS
      • 정보보안 관련
        • QRadar
        • Splunk
        • System
        • Web
      • 기타
        • 세상 모든 정보
        • 서적
      • 게임 관련
        • 유니티
      • 부동산
      • 맛집 찾기
        • 강남역
        • 양재역
        • 판교역
        • ★★★★★
        • ★★★★
        • ★★★
        • ★★
        • ★
      • 결혼_육아 생활
        • 리얼후기
        • 일상
        • 육아
        • 사랑
        • Food
      • 영어
        • 스피킹
        • 문법
        • 팝송
        • 영화
      • K-컨텐츠
        • 드라마
        • 영화
        • 예능
      • 독서
      • 프로젝트 관련 조사
        • 시스템 구축
        • 로그 관련
        • 웹
        • APT
        • 모의 해킹
        • DB
        • 허니팟
        • 수리카타
        • 알고리즘
        • FDS
      • 기업별 구내 식당 평가
        • 한국관광공사
        • KT telecop
        • KT M&S
        • KT powertel
        • KT cs 연수원
        • 진에어
      • 대학 생활
        • 위드윈연구소
        • 진로 고민
        • 채용정보
        • 자동차
        • 주식
        • 악성코드
        • 게임 보안
      • 쉐어하우스
  • 블로그 메뉴

    • 홈
    • 게임 관련
    • IT 기술 관련
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    판교역
    맛집
    무역전쟁
    판교맛집
    수제버거
    돈까스
    상호관세
    복리후생
    AWS
    점심
    이재곧죽습니다
    유니티
    런치
    수제버거존맛
    보안가이드
    마케팅
    대통령
    쥬쥬랜드
    판교
    수제버거맛집
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
호레
[Marshmallow] 권한 요청 방법
상단으로

티스토리툴바