ContentProvider를 공부하던 중 UriMatcher를 보게되었다.
UriMatcher란?
두 개의 Uri를 비교하여 해당하는 값을 출력해주는 기능을 하는 class 이다.
URI 구성
content://com.androidhuman.phoneprovider/phones/lg/3
URI는 크게 authority와 path로 구성되어 있다.
Description | |
---|---|
content:// | 컨텐트 프로바이더에 의해 제공되는 데이터임을 알린다. 이부분은 변하지 않는다. |
com.androidhuman.phoneprovider | 컨텐트 프로바이더의 authority 부분이다. 각 컨텐트 프로바이더의 고유 이름이다. |
phones/lg | 컨텐트 프로바이더의 path 부분이다. 어떤 데이터를 변환할지를 이 부분을 통해 지정한다. |
/3 | phones/lg의 하위 데이터 중 하나를 가리키는 것이다. 해당 데이터의 ID를 나타낸다. |
UriMatcher(int code)
URI 트리의 루트 노드를 생성한다.
Parameters | Description |
---|---|
code | 루트 URI와 일치하는 코드 |
addURI(String authority, String path, int code)
Match를 위한 URI와 URI가 일치할 때 리턴할 코드를 추가한다.
URI 노드는 정확히 일치하는 문자열 일 수 있으며, 모든 텍스트와 일치하는 토큰 "*" 또는 숫자 만 일치하는 토큰 "#"일 수 있다.
Parameters | Description |
---|---|
authority | 컨텐트 프로바이더 중에서 어느 authority에 해당하는지 구분할 때 사용하는 지정된 값이다. |
path | authority 중에서 다음 path에 해당한다. path/# 는 path 다음에 오는 모든 숫자를 지칭 path/* 의 경우 숫자와 문자를 포함한다. |
code | match() 메소드 사용 시 일치한다면 반환하는 정수를 의미한다. |
match
addURI로 등록된 URI와 입력된 URI를 비교하여 지정된 code를 리턴한다.