마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

웹뷰 환경에서의 런타임 퍼미션 획득 가능 여부 등 질문 드립니다!

0 추천
우선 개발자가 아니라 설명이 매끄럽지 못한 점 대단히 죄송합니다!

구상 중인 기능이 실제 개발 가능한지 알아보고자 여러 방면으로 검색도 해보고 하였으나 답이 명확하지 않아 질문드리게 되었습니다.

 

운영 중인 앱에 여러 퍼미션 획득이 필요한 신규 기능을 사용자 동의 하에 선별적으로 제공하려합니다.

토글 또는 버튼 등을 통해 런타임 퍼미션 API를 호출하여 관련 퍼미션을 모두 획득하는 방법을 최초에 구상해보았으나 아래와 같은 의문이 들었습니다.

 

런타임 퍼미션 API가 없는 마쉬멜로우 이하 버전에서는 어떻게 되는가?

   1. 토글 또는 버튼 등을 조작하여도 아무런 반응이 일어나지 않거나 오류 메시지가 표시된다.

      - 이 경우, 애초에 선별적으로 제공하려 한 만큼 해당 메뉴 자체를 마쉬멜로우 이상에서만 노출하면 되기 때문에 별도 이슈가 없을 것 같습니다.

   2. 앱 설치 시 관련 퍼미션을 모두 획득해야 한다.

      - 이 경우가 문제 인데... 현재 마쉬멜로우 이하 버전 사용자가 45%가 넘는 상황이라 재설치 또는 업데이트 과정에서 사용자 반감이 우려되는 상황입니다.

 

 

2번의 상황에 대한 해결방법으로 아래 내용을 생각해 보았습니다.

런타임 퍼미션 API호출을 위한 버튼 또는 토글 등을 네이티브 앱이 아닌 웹뷰 환경에서 구현하여 퍼미션 획득이 가능한가?

   1. 웹뷰 환경에서 런타임 퍼미션 API를 호출하여 네이티브 앱의 퍼미션 획득이 가능하다.

     - 가능하다면 획득한 퍼미션은 일회성이 아닌 지속 이용이 가능할지 궁금합니다.

   2. 1의 답이 가능이라면, 스토어에서 앱을 설치할 때 퍼미션 획득을 회피할 수 있는지 궁금합니다.

이 외에도 제가 무지하여 구상하지 못하였으나 목적을 달성할 수 있는 방법이 있다면 조언 부탁드립니다!

(목적: 안드로이드 2.3.3 버전 이상의 모든 단말기에서 앱 설치 또는 업데이트 시에 별도 퍼미션 획득 없이, 6.0 버전 사용자에게 런타임 퍼미션API 호출 버튼을 제공한다.)
 

다시 한 번 매끄럽지 못한 질문 내용에 양해를 부탁드리며, 충분치 않은 내용은 댓글 등을 통해 지적해주시면 바로 보충할 수 있도록 하겠습니다!!!

감사합니다!!!
꼬꼬마당 (170 포인트) 님이 2017년 1월 24일 질문
꼬꼬마당님이 2017년 1월 24일 수정

2개의 답변

+1 추천
 
채택된 답변
개발기준이 Target API 23이상인 경우 디폴트로 모든권한이 OFF 로 앱이 시작됩니다.

API23 이상인 경우

1. 웹뷰에서도 가능한가?

웹뷰에서 네이티브 메서드를 호출하면서 런타임퍼미션 획득 과정을 거친후에 원래 하려던 기능을 수행시키면 됩니다. 물론 거부하면 실행오류에 대한 처리도 해야겠죠 타겟 api가 23인경우에 안드로이드 낮은버전에서 런타임 체크를 하면 자동으로

승인된 값으로 넘어오기 때문에 문제가 되지 않습니다.

2. 피할수 있는 방법은 있는지?

런타임퍼미션 획득과정 자체를 생략하고 싶으면 Target API를 22 이하로 낮추기만 하면됩니다. 다만..런타임 체크 이런 코드는 빼야됩니다.

런타임 퍼미션에 대한 기능구현은 권장되는 부분이라서 구현을 나중으로 미루는거지 결국은 하라고 할거 같구요. 23이상인경우

자동으로 되게 하는 방법은 없습니다.
라쎄린드 (25,460 포인트) 님이 2017년 1월 25일 답변
꼬꼬마당님이 2017년 1월 25일 채택됨
상세한 답변 감사드립니다!! 덕분에 궁금증이 많이 해소되었습니다(꾸벅)

마지막으로 1번 내용에 대해 추가적으로 하나만 더 여쭤보아도 될까요?

타겟 SDK를 23으로 설정한 상태에서 런타임 퍼미션 API 호출 코드를 삽입한 버튼 클릭 시 마시멜로우 이하 버전에서 아래 두 가지 중 어떤 식으로 처리되는지 궁금합니다.

마시멜로우 이하 버전에서는 런타임 퍼미션 API를 호출할 수 없기 때문에
   1. 플레이스토어에서 어플리케이션 설치 또는 업데이트 시 런타임으로 획득 가능하게끔 해둔 퍼미션 이용 동의를 받는다.
   2. 버튼 클릭만 하면 자동으로 승인된 값으로 넘어온다.

자세히 설명해 주셨는데 이해가 부족해 죄송합니닷!
23설정상태의 앱을 마켓에서 받을 시 기기 자체가 23이상인 경우  특수한권한이 필요없다고 나오고 앱실행시 런타임퍼미션으로 진행됩니다. 23미만인 기기의 경우 다운받을때 부터
권한들을 승인하게끔 플레이스토어에서 표시됩니다.

도움이되셨다면 채택을 ~.^
궁금증이 깔끔하게 해결되었습니다! 감사합니닷!
+1 추천
2. 사용자 반감이 우려되면 그렇게 하지 않으면 됩니다.

권한이 실제로 필요할 때만 해당 권한을 요청하도록 구현하세요.
익명사용자 님이 2017년 1월 24일 답변
그렇게 구현한다면 마쉬멜로우 이하 버전에서도 앱 설치 또는 업데이트 시에 별도 권한 획득이 필요 없을까요?

필요할 때 마다라고 하면 이미 권한을 획득한 사용자일지라도 기능을 실행할 때마다 권한을 계속 획득해야 하는 것이겠죠?
롤리팝 까지는 설치시 모든 권한이 획득된 상태이며 사용자가 권한을 비활성화할 수도 없습니다. 따라서 권한 획득을 하지 않아도 됩니다.

마시멜로우 이상에서는 사용자가 권한을 언제든지 비활성화 할 수 있으므로 필요할 때마다 권한 검사를 해야 합니다.
넵!

마시멜로우 이하 버전에서 앱 설치 시에 나타나는 '다음 사용 항목에 동의해 주세요.'라는 팝업의 획득 권한 목록에 선별적 기능 제공을 위한 특정 권한 획득은 표시하지 않을 방법이 없을 지에 대한 고민이었습니다!

즉, 만약 READ_PHONE_STATE 권한을 사용하는 일부 기능을 사용자 동의 하에 제공하려한다면, 마시멜로우 버전은 런타임 퍼미션 API를 호출하여 사용 희망 시에 퍼미션을 획득하면 되지만, 마시멜로우 이하 버전에서는 설치 시에 나타나는 동의 목록에 해당 권한이 표시되기 때문에 이를 회피할 방법이 없을지 궁금하였습니다.
제가 설명이 부족하여 번거롭게 해드리는 것 같습니다ㅠ 죄송합니다ㅠㅠ
...