안드로이드 스튜디오/Java

안드로이드 스튜디오: 컨텐츠 제공자 (Content Provider)

류창 2021. 12. 11. 18:06
반응형

 

안드로이드의 4대 컴포넌트중 4번째 컨텐츠 제공자에대해 알아보겠습니다.

 

• Content provider
  • 안드로이드의 보안 정책은 각 앱의 데이터를 다른 앱이 접근 X
  • 유일하게 허용하는 접근 방법이 컨텐트 프로바이더

 

https://developer.android.com/guide/topics/providers/content-provider-creating?hl=ko

 

콘텐츠 제공자 생성  |  Android 개발자  |  Android Developers

콘텐츠 제공자 생성 콘텐츠 제공자는 중앙 리포지토리로의 데이터 액세스를 관리합니다. Android 애플리케이션에서는 제공자를 하나 이상의 클래스로, 매니페스트 파일에 있는 요소와 함께 구현

developer.android.com

 

 

 

카카오톡이나, 트위터같은 메신저 어플이 우리 휴대폰에있는 전화번호부를 접근하려고 요청이오죠?

 

어플리케이션이 내 휴대폰 속 저장된 데이터의 접근 권한을 제어해주는 장치가 컨텐츠 제공자가 하는일입니다.

 

 

 

• URI (Uniform Resource Identifier)
  • 컨텐트 프로바이더의 데이터에 접근하기 위한 주소
  • 일반적으로 “content://패키지명/경로/아이디” 형식으로 지정  

 

 

어플리케이션이 접근을 할때 URI로 접근을합니다.

 

시험적으로 전화 기록을 읽어보는 테스트를 해보겠습니다.

 

보호 수준: 위험을 기억하세요

 

이걸 사용할겁니다.

 

사용하는법은  manifest 파일에 한줄을 추가하시면됩니다.

 

 

그 다음,  내 휴대전화에 저장된 통화기록을 읽을 Cursor를 준비합니다.

 

 

눈치를 채셧겟지만, Contents Provider는 데이터베이스에서 데이터를 조회할때와 비슷한 조회방식을 가집니다.

 

왜냐하면 전화기록도 똑같이 데이터베이스에 일정한 형식을따라 저장된 데이터들이니깐요.

 

callSet으로 통화형식을 지정해주고, Cursor로 처음부터 끝까지 통화기록을 읽어줍시다.

 

이걸..그대로 실행하면..

 

 

오류를 뱉습니다.  왜 이런 오류를 뱉을까요?

 

 

이유는  READ_CALL_LOG의 보호 수준이 위험 이라서 그렇습니다.

 

https://developer.android.google.cn/guide/topics/manifest/permission-element.html?hl=ko  

 

<permission>  |  Android 개발자  |  Android Developers

이 애플리케이션이나 다른 애플리케이션의 특정 구성요소 또는 기능에 대한 액세스를 제한하는 데 사용될 수 있는 보안 권한을 선언합니다. 권한 작동 방식에 관한 자세한 내용은 소개의 권한

developer.android.google.cn

보호 수준이 위험이면 사용자에게 확인을 요청해야한다.

https://developer.android.com/training/permissions/requesting?hl=ko  

 

앱 권한 요청  |  Android 개발자  |  Android Developers

앱 권한 요청 모든 Android 앱은 액세스가 제한된 샌드박스에서 실행됩니다. 앱이 자체 샌드박스 밖에 있는 리소스나 정보를 사용해야 하는 경우 권한을 선언하고 이 액세스를 제공하는 권한 요청

developer.android.com

 

즉, 우리는 6번을 구현안한것이다. 위험한 정보를 접근하려면 사용자에게 최초로 한번 확인작업을 해야한다.

 

이 한줄을 추가하자.

 

다시한번 실행을 해보면...

 

엇... 많이 익숙한 요청이다

 

카카오톡, 페이스북 등등 이런 요청을 많이 보셧죠?

꼭 이런 작업을 거치셔야 정상적으로 통화기록을 조회 할 수 있습니다.

 

 

허용을 눌러주고, 버튼을 눌러주면..

 

짜잔 제가 미리 통화기록을 남긴 2개의 기록이 잘 출력이되었습니다.

 

 

 

 

이상 컨텐츠 프로바이더에 대해 알아보았습니다.

감사합니다.

반응형