안드로이드 개발 질문/답변
(글 수 45,052)
http://developer.android.com/resources/samples/SearchableDictionary/src/com/example/android/searchabledict/DictionaryProvider.html
여기에 있는 내용이 이해가 안갑니다..
저장되는 테이블이 여러개일 경우 getType를 통해서 그 테이블을 결정할 수 있다고 하는데..
matcher.addURI(AUTHORITY, "dictionary", SEARCH_WORDS);
matcher.addURI(AUTHORITY, "dictionary/#", GET_WORD);
이렇게 나오는데..
AUTHORITY 이건 프로바이더를 선언할 때의 고유한 값을 나타내는것이고..
2번째는 정확이 모르겠습니다.
3번째는 리턴되는 스트링값인거 같은데..
정확히 어떻게 쓰는건지 이해가 가지 않습니다. 그리고 vnd. 이런건 왜 쓰는지 잘 모르겠습니ㅏㄷ.




덜렁 링크만 달아드려 어렵게 생각하신듯 하군요.
UriMatcher의 활용 예를 찾다가 저게 보여서 달아드린건데...
Uri 맨 뒷부분에 특정 문자열을 달아서 구분하는 방식입니다.
content://AUTHORITY/테이블명
와 같은 형식으로요.
matcher.addURI(AUTHORITY, "dictionary", SEARCH_WORDS)이면
AUTHORITY 다음에 dictionary라는 문자열이 오면 SEARCH_WORDS라는 상수값에 매칭시켜라 라는 겁니다.
match(Uri)를 쓰시면 uri를 분석해서 지정해둔 상수값을 리턴해줍니다.
insert든 query든 어디에서든지 match(Uri)를 써서 swich case를 돌려서 테이블을 구분하시면 됩니다.
swich case를 쓰기 때문에 그냥 1,2 라는 숫자보단
알아보기 쉽게 상수를 지정해서 사용하는 것이구요.
UriMatcher는 uri를 substring 해서 하나하나 if else 하는 번거로움을 줄이는 용도로 사용됩니다.
라고 클래스 설명에 나와있죠.
Uri를 지정하실 때 Uri.withAppendedPath(Uri baseUri, String pathSegment)로 뒷부분에 테이블명 지정하시면 됩니다.
그럼 UriMatcher가 문자열 확인해서 구분해주고요.