상세 컨텐츠

본문 제목

(안드로이드) 콘텐트 프로바이더 Uri란? (ContentProvider URI란?)

Android

by choiDev 2019. 1. 29. 10:51

본문

콘텐트 프로바이더 (ContentProvider) Uri란?

사실 ContentProvider를 이용해야 할 ContentResolver 앱에서 ContentProvider 내부의 상세한 DB 구조를 알 수 없다.

그래서 ContentResolver측은 ContentProvider가 제공한 Uri를 가지고 DB를 간단하게 접근이 가능하도록 기능을 제공한다.


 - query문으로 표현하고 싶은 내용 

ex) 학생관리 프로바이더에서 학번이 200106054인 학생 성적을 보여주세요.


위의 내용을 Uri로 표현하면 아래와 같다.

ex) content://학생관리프로바이더 주소/학생/성적/학번/#

  - #은 정수, *은 문자열로 자유롭게 변경할 수 있는 약속된 기호이다.

Uri 해석만 가능하더라도 어떤 내용이 결과로 전달될지 예상이 가능합니다.

자 이제는 안드로이드에서 공식적으로 권장하는 콘텐트 프로바이더 Uri형식을 살펴 보겠습니다.


[안드로이드 권장 Uri형식]



자 그럼 위 그림 처럼 고정 URI는 항상 변경이 없는 URI니깐

사용자 정의 영역의 Uri를 만드는 예제를 아래에 보여드리겠습니다.

일단 아래와 같은 테이블이 있다고 가정하겠습니다.


[학생테이블]

ID 

학번 

성명 

학과 

학년 

 1

 200106054

홍길동 

컴퓨터 

 2 

 200106055 

김호동 

디자인 

 3

200106056 

박길동 

영문 

 4

200106057 

이길도 

신문방송 

 5

200106058 

최길동 

의상디자인 


위 표의 DB 내용에서 세가지 경우의 데이터를 가져올 때 사용자 정의 영역의 Uri를 어떻게 표현하는지 살펴 보겠습니다.

 1. 학생 테이블 전체를 불러오는 Uri : 학생

 2. 학생 테이블에서 id가 3인 학생 Uri : 학생/3

 3. 학생 테이블에서 3학년 중 이름이 홍길동인 학생 Uri : 학생/학년/3/이름/홍길동


생각보다 Uri를 작성하는 규칙이 어렵진 않으시죠?

이번 글은 여기서 끝입니다.


항상 제 부족한 글을 읽어 주셔서 감사합니다.

아직은 필력이 부족해서 좋은 글을 못쓰지만 다들 이해할 수 있는 그런 글을 쓰도록 노력하겠습니다.


혹시 URI를 사용하는 예제가 보고 싶으시다면

아래의 링크를 통해 콘텐트 프로바이더 예제와 함께 Uri의 구조도 살펴 보세요~

https://choidev-1.tistory.com/56


다들 좋은 하루 되셔요~~~~~!! ^^

관련글 더보기