[android] 안드로이드 Content Provider와 URI 매칭

안드로이드 애플리케이션을 개발할 때 데이터 공유와 관리를 위해 안드로이드 Content Provider를 사용할 수 있습니다. Content Provider는 데이터베이스나 파일 시스템과 같은 데이터 소스를 추상화하고, 안전하게 다른 애플리케이션에 데이터를 제공하는 역할을 합니다. Content Provider는 URI를 사용하여 데이터에 액세스합니다.

URI의 역할

URI(Uniform Resource Identifier)는 데이터를 식별하고 나타내는 데 사용됩니다. URI를 통해 Content Provider에 요청하는 데이터를 식별하고, 데이터를 가져오거나 조작할 수 있습니다.

안드로이드에서 URI는 다음과 같은 형식을 가지고 있습니다.

content://com.example.myapp.provider/table_name

위의 예시에서 content://는 Content Provider에 대한 접두사를 나타내며, com.example.myapp.provider는 Content Provider의 권한을, table_name은 데이터 테이블을 나타냅니다.

URI 매칭

Content Provider의 URI는 각기 다른 작업에 대해 다른 URI 스키마와 경로를 가지고 있습니다. 예를 들어, 데이터 삽입, 조회, 업데이트, 삭제 등의 작업을 수행하기 위해 각기 다른 URI를 사용합니다.

안드로이드에서 URI 매칭은 UriMatcher 클래스를 사용하여 수행할 수 있습니다. UriMatcher 클래스는 Content Provider의 URI를 관리하고, URI 패턴을 매칭하는 기능을 제공합니다.

다음은 UriMatcher 클래스를 사용하여 URI를 매칭하는 예시입니다.

// Content Provider에 대한 접두사가 포함된 URI와 해당 작업에 대한 상수를 매칭하는 UriMatcher를 생성
UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI("com.example.myapp.provider", "table_name", TABLE_DATA);
uriMatcher.addURI("com.example.myapp.provider", "table_name/#", TABLE_ITEM_DATA);

// URI를 매칭하여 해당 작업을 수행
switch (uriMatcher.match(uri)) {
    case TABLE_DATA:
        // 테이블 데이터 조회 작업 수행
        break;
    case TABLE_ITEM_DATA:
        // 특정 항목의 데이터 조회 작업 수행
        break;
    default:
        throw new IllegalArgumentException("Unknown URI: " + uri);
}

위의 예시에서 UriMatcher 클래스를 사용하여 URI를 매칭하고, 해당 작업에 맞게 처리를 수행하고 있습니다.

안드로이드 Content Provider와 URI 매칭을 통해 데이터에 안전하게 접근하고 조작할 수 있으며, UriMatcher를 활용하여 각 작업에 맞는 URI를 정의 및 처리할 수 있습니다. URI 매칭을 통해 안드로이드 애플리케이션의 데이터 공유와 관리를 효과적으로 수행할 수 있습니다.

참고 자료