안드로이드 권한·퍼미션 요청, onActivityResult & startActivityForResult 예제

>

>

이번주는 리뷰 글 보다 공부 글을 더 많이 작성했는데, 아마 방학 기간 동안은 공부 글을 더 많이 쓰지 않을까 합니다. 이번에 개인적으로 만들고 있는 앱은 카메라라는 기능을 사용하는데, 이에 대해 구글링을 해보았지만 만족스러운 결과가 없더군요. 따라서 요근래 안드로이드 도큐먼트를 읽어보며 작업을 하는 중입니다. 따라서 이 포스팅은 도큐먼트를 번역하여 공부한 스토리을 토대로 작성되었습니다. 카메라 만들기 포스팅은 이 다소음부터 작성되는 글들이 전체 해당댑니다. 이 글은 그중에서 한 파트를 맡습니다. 이 파트에서는 권한을 요청하는 비결에 대해 소개합니다.

매니페스트에 권한, 기능 명시

필수 권한은 위와 같슴니다. 위 이얘기을 매니패스트에 입력해야 한다. permission은 권한을 의의하고, feature는 기능을 의의한다. uses-feature 태그로 기능을 명시할 경우 구글 플레이 스토어에서 사용자가 해당 앱을 다운로드 할 때 요구되는 기능을 확인할 수 있게 됩니다. 사용할 권한은 카메라 권한, 외장 얘기지 쓰기 권한, 녹화 권한이 있슴니다. 이들에 대해서는 다시 설명하겠슴니다.

사용자에게 권한 요청

상수를 미리 정의해두면 좋음니다. 세 상수는 startActivityForResults()라는 메소드를 사용할 때 쓰이다. ​

위 코드는 퍼미션을 요청하는 코드의 축약형이다. 기억해두면 굉장히 편리할것입니다. 이전에 퍼미션을 요청하는 방법에 대해 글을 쓴 적이 있었는데, 당시에는 제가 안드로이드 공부를 시작한 지 얼마 안 되었던 시절이라 굉장히 복잡한 방법을 소개했었습니다. 그 방법보다는 이 코드를 사용합시다. 위 코드는 사용자가 권한 상태를 확인하고 만약 권한을 허용하지 않았다면 권한을 요청하는 얘기이다.

권한을 거절했을 때 콜백처리

>

사용자가 만약 권한 요청 다이얼로그를 거절했을 때 대처하는 방법에 대해 알아보겠습니다. 앞서 세 상수를 정의했는데, 이 상수는 onActivityResult라는 콜백함수를 사용하기 위함이었습니다. 이 함수의 풀네임을 기억할 필요는 없습니다. 자바코드에서 Ctrl+O 단축키를 누르면 위와 같은 창이 본인타납니다. 위 창에서 철자를 입력하면 자동으로 검색되는데, activityresult를 입력하면 위와 다같이 본인타납니다. OK를 눌러 이 함수를 사용해보도록 합니다. 이 함수에 대한 사용법에 대해 간단히 알려드리겠습니다.​

OK를 누르면 이 메소드가 자동으로 생성될 겁니다.​

저는 조건 검사가 연달아 있을 때 switch 문을 사용하는 편이라 switch 문을 사용했읍니다. resultCode는 OK와 Canceled, First User까지 세가지 종류가 있지만 주로 OK와 Canceled가 사용됩니다. OK는 사용자가 다이얼로그에서 Positive Buttom을 클릭했을 때를 반환한 값이고, Canceled는 Negative Button을 클릭했을 때를 반환할것입니다.

여러 권한 한번에 요청

여러개의 권한의 경우 위와 같이 배열에 권한을 더 추가하면 됩니다. 그렇기­때문에 해당 권한을 가지고 있는지 없는지를 검사하는 조건부에도 대응하는 예기을 추가해야 할 겁니다. 이렇게 여러 권한을 요청하게 되면 onActivityResult만으로는 각각 결과를 것이 불가능합니다. 그러므로 다른 메소드를 사용해보겠습니다. Ctrl+O 단축키로 아래와 같은 메소드를 불러오도록 합니다.​

이 메소드는 퍼미션들을 onActivityResult 메소드라고 이해하셔도 좋 습니다. 이름을 읽기만 해도 용도를 어느정도 추측할 수 있었을 겁니다. 이 메소드를 사용하면 각각 퍼미션에 대응하는 처리를 만들어낼 수 있 습니다. 아래와 같이 얘기입니다니다.​

#안드로이드 #안드로이드권한요청 #안드로이드퍼미션요청 #방법 # #하는방법 #onActivityResult #startActivityForResult