개발자

안드로이드 권한 2번 이상 거부시 승인요청 팝업

2023년 08월 30일조회 465

안녕하세요 코틀린으로 앱개발 공부중인데 해결 안되는 게 있어서 문의드립니다. 저는 앱을 설치하고 처음 접속시 권한(Permission)부터 승인요청하도록 만들고 있어요. RequestMultiplePermissions 를 활용하여 여러 권한을 한번에 처리해보도록 코딩하고 있는데 아무리 코드를 작성해도 사용자가 연속 2번 거부 누를 경우 어플을 재접속해도 승인요청 팝업이 생성되지 않습니다. 어떻게 코드를 작성해야 거부를 계속 누르더라도 권한 필요성 설명 팝업을 통해 동의를 얻는 순간 무한정으로 승인요청 팝업을 생성할 수 있을까요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

인기 답변

장성호님의 프로필 사진

Android 환경에서 권한 개발을 진행하고 있으신가봐요! Android는 각 권한 별로 최대 2회 권한 요구를 진행할 수 있습니다. 이후부터는 권한 요구를 해도 시스템 다이얼로그가 나오지 않아요. 이 때부터는 shouldShowRequestPermissionRationale을 통해, 해당 권한에 대하여 개발자가 직접 만든 다이얼로그를 보여줘야합니다. 보통은 권한을 허용시켜달라고 하면서, 설정 앱으로 이동할 수 있게끔 해줍니다. 작성자님의 마지막 문구를 이해한 바로는, 권한 요구를 위한 시스템 다이얼로그가 최초 2회 이후 등장하지 않아서 겪은 문제인 것 같아요. 해결 방법은 위에 적어놓은대로 진행하면 되며, 분기는 다음과 같습니다. 아래 코드는 그저 스켈레톤 코드니까, android & kotlin 환경에 맞춰서 바꾸시면 될 거 같아요! 해당 환경에 맞는 코드랑 문법을 자세히는 몰라서요ㅎㅎ

1if(checkSelfPermission(permission)== PackageManager.PERMISSION_GRANTED}){
2    // 권한 허용시 핸들링
3    return;
4 }
5
6if(shouldShowRequestPermissionRationale(permission)){
7    // 시스템 다이얼로그를 보여줘야할 때
8    requestPermissions();
9}
10
11// 개발자가 만든 커스텀 다이얼로그를 보여줘야할 때
12showPermissionDialog().then(response -> {
13    if(response == buttonTap) {
14        // 설정 페이지로 이동
15        openAppSettings();
16    }
17});
이승우님의 프로필 사진

이승우

작성자

개발자 준비생2023년 08월 31일

정말 감사합니다. 저는 코드를 잘못 작성한 줄 알고 며칠 끙끙거리고 있었는데 전혀 아니었군요. 인터넷으로는 뭐라고 검색해야 나오는 지 몰라서 계속 찾아봐도 안보이더라고요. 덕분에 삽질에서 벗어납니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!