Share via


ContactsContract.RawContacts 클래스

정의

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

[Android.Runtime.Register("android/provider/ContactsContract$RawContacts", DoNotGenerateAcw=true)]
public sealed class ContactsContract.RawContacts : Java.Lang.Object
[<Android.Runtime.Register("android/provider/ContactsContract$RawContacts", DoNotGenerateAcw=true)>]
type ContactsContract.RawContacts = class
    inherit Object
상속
ContactsContract.RawContacts
특성

설명

동기화된 각 계정의 각 사용자에 대해 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다. 동기화 어댑터 및 연락처 관리 앱은 이 API의 기본 소비자입니다.

<h3>집계</h3>

원시 접점이 삽입되거나 해당 구성 데이터가 변경될 때마다 공급자는 원시 연락처가 다른 기존 원시 연락처와 일치하는지 여부와 일치하는 경우 해당 연락처를 집계하는 경우 검사. 집계는 집계 연락처에 RawContacts 대한 참조인 필드의 #CONTACT_ID 변경에 의해 테이블에 반영됩니다.

구조화된 이름, organization, 전화 번호, 이메일 주소 또는 애칭을 변경하면 다시 집계가 트리거됩니다.

프로그래밍 방식으로 집계를 제어하는 메커니즘도 AggregationExceptions 참조하세요.

<h3>Operations</h3><dl><dt><b>Insert</b></dt><dd>

원시 접점은 증분 또는 일괄 처리로 삽입할 수 있습니다. 증분 메서드는 더 전통적이지만 효율성이 떨어집니다. 원시 연락처를 만들 때 사용할 수 있는 값이 없는 Data 경우에만 사용해야 합니다.

ContentValues values = new ContentValues();
            values.put(RawContacts.ACCOUNT_TYPE, accountType);
            values.put(RawContacts.ACCOUNT_NAME, accountName);
            Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
            long rawContactId = ContentUris.parseId(rawContactUri);

</p>

값을 사용할 수 있게 되면 Data 해당 값을 삽입합니다. 예를 들어 이름을 삽입하는 방법은 다음과 같습니다.

values.clear();
            values.put(Data.RAW_CONTACT_ID, rawContactId);
            values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
            values.put(StructuredName.DISPLAY_NAME, &quot;Mike Sullivan&quot;);
            getContentResolver().insert(Data.CONTENT_URI, values);

</p>

일괄 처리 방법은 지금까지 선호됩니다. 원시 연락처와 해당 구성 데이터 행을 단일 데이터베이스 트랜잭션에 삽입하고 최대 하나의 집계 단계를 수행합니다.

ArrayList&lt;ContentProviderOperation&gt; ops =
                     new ArrayList&lt;ContentProviderOperation&gt;();
            ...
            int rawContactInsertIndex = ops.size();
            ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
                     .withValue(RawContacts.ACCOUNT_TYPE, accountType)
                     .withValue(RawContacts.ACCOUNT_NAME, accountName)
                     .build());

            ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
                     .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
                     .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
                     .withValue(StructuredName.DISPLAY_NAME, &quot;Mike Sullivan&quot;)
                     .build());

            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

</p>

를 사용하여 ContentProviderOperation.Builder#withValueBackReference(String, int) 첫 번째 작업에 삽입된 원시 접점의 아직 알 수 없는 인덱스 값을 참조합니다.

<dt><b>Update</b></dt><dd>

원시 연락처는 증분 또는 일괄 처리로 업데이트할 수 있습니다. 가능하면 일괄 처리 모드를 사용해야 합니다. 절차 및 고려 사항은 삽입에 대해 위에서 설명한 것과 유사합니다.

</dd><dt><b>Delete</b></dt><dd>

원시 연락처가 삭제되면 모든 데이터 행과 StatusUpdates, AggregationExceptions, PhoneLookup 행이 자동으로 삭제됩니다. 행과 Contacts 연결된 모든 원시 연락처가 삭제 Contacts 되면 행 자체도 자동으로 삭제됩니다.

호출은 resolver.delete(...)원시 연락처 행을 즉시 삭제하지 않습니다. 대신 원시 연락처에 플래그를 #DELETED 설정하고 집계 연락처에서 원시 연락처를 제거합니다. 그런 다음 동기화 어댑터는 서버에서 원시 연락처를 삭제하고 다시 호출 resolver.delete(...) 하고 쿼리 매개 변수를 전달하여 전화 쪽 삭제를 ContactsContract#CALLER_IS_SYNCADAPTER 완료합니다.

일부 동기화 어댑터는 읽기 전용이므로 서버 쪽 변경 내용만 휴대폰에 동기화하지만 반대는 동기화하지 않습니다. 이러한 원시 연락처 중 하나가 삭제되도록 표시된 경우 휴대폰에 유지됩니다. 그러나 집계 접촉의 일부가 아니므로 사실상 보이지 않습니다. </Dd>

<dt><b>Query</b></dt><dd>

연락처에서 모든 원시 연락처를 쉽게 찾을 수 있습니다.

Cursor c = getContentResolver().query(RawContacts.CONTENT_URI,
                     new String[]{RawContacts._ID},
                     RawContacts.CONTACT_ID + "=?",
                     new String[]{String.valueOf(contactId)}, null);

</p>

특정 계정 내에서 원시 연락처를 찾으려면 계정 이름을 입력하고 선택 영역에 입력하거나 쿼리 매개 변수로 전달할 수 있습니다. 특히 URI를 다시 사용할 수 있는 경우 후자의 접근 방식을 사용하는 것이 좋습니다.

Uri rawContactUri = RawContacts.CONTENT_URI.buildUpon()
                     .appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName)
                     .appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType)
                     .build();
            Cursor c1 = getContentResolver().query(rawContactUri,
                     RawContacts.STARRED + "&lt;&gt;0", null, null, null);
            ...
            Cursor c2 = getContentResolver().query(rawContactUri,
                     RawContacts.DELETED + "&lt;&gt;0", null, null, null);

</p>

원시 연락처를 연결된 모든 데이터와 함께 읽는 가장 좋은 방법은 디렉터리를 사용하는 Entity 것입니다. 원시 연락처에 데이터 행이 있는 경우 엔터티 커서에는 각 데이터 행에 대한 행이 포함됩니다. 원시 연락처에 데이터 행이 없으면 커서에 원시 연락처 수준 정보가 포함된 한 행이 계속 포함됩니다.

Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
            Uri entityUri = Uri.withAppendedPath(rawContactUri, Entity.CONTENT_DIRECTORY);
            Cursor c = getContentResolver().query(entityUri,
                     new String[]{RawContacts.SOURCE_ID, Entity.DATA_ID, Entity.MIMETYPE, Entity.DATA1},
                     null, null, null);
            try {
                while (c.moveToNext()) {
                    String sourceId = c.getString(0);
                    if (!c.isNull(1)) {
                        String mimeType = c.getString(2);
                        String data = c.getString(3);
                        ...
                    }
                }
            } finally {
                c.close();
            }

</p></dd></dl><h2>Columns</h2>

<table class="jd-sumtable"><tr><th colspan='4'RawContacts<>/th></tr tr tr><<>td>long</td td<>#_ID></td td>><read-only</td td>><Row ID. 동기화 어댑터는 업데이트 중에 행 ID를 유지하려고 시도해야 합니다. 즉, 동기화 어댑터를 삭제하고 다시 삽입하는 것보다 원시 연락처를 업데이트하는 것이 훨씬 낫습니다.</td/tr tr<>td><>long</td td>#CONTACT_ID<></td td><>read-only</td td td>><이 원시 연락처가 속한 테이블의 행 ContactsContract.Contacts ID입니다.>< 원시 연락처는 집계 프로세스에 의해 연락처에 연결되며, 필드 및 AggregationExceptions로 제어 #AGGREGATION_MODE 할 수 있습니다.</td/tr tr><td>><int</td td>#AGGREGATION_MODE<<>/td td td<>>read/write</td td>><집계 프로세스의 프로그래밍 방식 제어를 허용하는 메커니즘입니다.>< 허용되는 값은 , #AGGREGATION_MODE_DISABLED#AGGREGATION_MODE_SUSPENDED입니다#AGGREGATION_MODE_DEFAULT. 도 AggregationExceptions참조하세요.</td/tr tr><td>><int</td td>#DELETED<<>/td td>><read/write</td td>><"deleted" 플래그: 기본적으로 "0", 행이 삭제로 표시된 경우 "1"입니다.>< android.content.ContentResolver#delete 가 원시 연락처에서 호출되면 삭제로 표시되고 집계 연락처에서 제거됩니다. 동기화 어댑터에서 서버의 원시 연락처를 삭제한 다음 ContactResolver.delete를 한 번 더 호출합니다. 이번에는 쿼리 매개 변수를 전달 ContactsContract#CALLER_IS_SYNCADAPTER 하여 데이터 제거를 완료합니다.</td/tr tr><td>><int</td td>#STARRED<<>/td td>><read/write</td td>><즐겨찾는 연락처에 대한 표시기입니다. 즐겨찾는 경우 '1', 그렇지 않으면 '0'입니다.>< 이 필드를 변경하면 해당 집계 연락처에 즉시 영향을 줍니다. 해당 집계 연락처의 원시 연락처가 별표로 표시되면 연락처 자체가 별표로 표시됩니다.</td/tr tr><td><>String</td td>#CUSTOM_RINGTONE<<>/td td>><read/write</td td>><원시 연락처와 연결된 사용자 지정 벨소리입니다.>< 일반적으로 의도를 사용하여 시작된 활동에서 반환되는 URI입니다 android.media.RingtoneManager#ACTION_RINGTONE_PICKER . 집계 연락처의 해당 값에 영향을 주려면 원시 접촉이 삽입될 때 이 필드를 설정해야 합니다. 연락처에서 사용자 지정 벨소리를 설정하려면 필드를 ContactsContract.Contacts#CUSTOM_RINGTONE Contacts.CUSTOM_RINGTONE 대신 사용합니다.</td/tr tr><td>><int</td td>#SEND_TO_VOICEMAIL<<>/td td>><read/write</td td>><이 원시 연락처의 호출을 음성 메일('1')에 직접 전달해야 하는지 여부('0')에 대한 표시기입니다.>< 집계 연락처의 해당 값에 영향을 주려면 원시 접촉이 삽입될 때 이 필드를 설정해야 합니다.</td></tr tr><<>td>String</td td><>#ACCOUNT_NAME</td td>><read/write-once</td td>><이 행이 속한 instance 계정의 이름이며, 와 쌍을 이루는 #ACCOUNT_TYPE 경우 특정 계정을 식별합니다. 예를 들어 Google 계정인 경우 Gmail 주소가 됩니다. 원시 접촉이 삽입될 때 설정되어야 하며 나중에 변경되지 않아야 합니다.</td/tr tr><td><>String</td td>><#ACCOUNT_TYPE</td td>><read/write-once</td td td<>><>

이 행이 속한 계정 유형으로, 와 쌍을 이루는 #ACCOUNT_NAME 경우 특정 계정을 식별합니다. 원시 접촉이 삽입될 때 설정되어야 하며 나중에 변경되지 않아야 합니다.

고유성을 보장하려면 Java 패키지 명명 규칙에 따라 새 계정 유형을 선택해야 합니다. 따라서 Google 계정은 "com.google" 유형입니다.

</td/tr tr><td><>String</td td>><#DATA_SET</td td>><read/write-once</td td td<>><>

이 행이 속한 계정 내의 데이터 집합입니다. 이렇게 하면 동일한 계정 유형에 대한 여러 동기화 어댑터가 서로의 데이터를 구분할 수 있습니다. , #ACCOUNT_NAME#DATA_SET#ACCOUNT_TYPE조합은 단일 동기화 어댑터와 연결된 데이터 집합을 식별합니다.

기본적으로 비어 있으며 완전히 선택 사항입니다. 여러 동기화 어댑터가 동일한 계정 유형 및 계정 이름에 대해 고유한 데이터를 입력하는 경우에만 채워야 합니다.

원시 접촉이 삽입될 때 설정되어야 하며 나중에 변경되지 않아야 합니다.

<이 행을 원본 계정으로 고유하게 식별하는 /td></tr tr<<>>td<>>String</td<>td#SOURCE_ID>>< 읽기/쓰기</td td><>문자열입니다. 일반적으로 원시 접촉이 삽입될 때 설정되며 나중에 변경되지 않습니다. 한 가지 주목할 만한 예외는 새 원시 연락처입니다. 계정 이름 및 형식(및 데이터 집합일 수 있음)이 있지만 원본 ID는 없습니다. 이는 동기화 어댑터에 새 연락처를 서버 쪽과 휴대폰의 해당 SOURCE_ID 필드에 저장해야 한다는 것을 나타냅니다. </td></tr tr tr<>><td>int</td td><><#VERSION/td td>><읽기 전용</td td><>버전 번호는 이 행 또는 관련 데이터가 변경 될 때마다 업데이트됩니다. 이 필드는 원시 접촉의 낙관적 잠금에 사용할 수 있습니다. </td></tr tr tr<<>>td>int</td<>td><#DIRTY/td td><>read/write</td td<>>변경되었음을 나타내는 #VERSION 플래그이며 이 행은 자체 계정으로 동기화되어야 합니다. URI에 쿼리 매개 변수가 지정되지 않은 한 원시 연락처가 변경될 때마다 값이 ContactsContract#CALLER_IS_SYNCADAPTER 자동으로 "1"로 설정됩니다. 동기화 어댑터는 불필요한 동기화를 방지하기 위해 항상 이 쿼리 매개 변수를 제공해야 합니다. 사용자가 서버의 일부 데이터를 변경하고, 동기화 어댑터가 휴대폰의 연락처를 업데이트합니다(CALLER_IS_SYNCADAPTER 플래그 없음) 플래그는 DIRTY 플래그를 설정하며, 이 플래그는 동기화를 트리거하여 변경 내용을 서버에 가져옵니다. </td></tr tr tr<>><td>String</td td><><#SYNC1/td td>><read/write</td td><>제네릭 열은 동기화 어댑터에서 임의로 사용하기 위해 제공됩니다. 콘텐츠 공급자는 동기화 어댑터를 대신하여 이 정보를 저장하지만 어떤 방식으로도 해석하지 않습니다. </td/tr tr td><>><String</td td><<#SYNC2>/td td>><읽기/쓰기</td td>><동기화 어댑터에서 사용할 일반 열입니다.>< </td/tr tr td><>><String</td td><<#SYNC3>/td td>><읽기/쓰기</td td>><동기화 어댑터에서 사용할 일반 열입니다.>< </td/tr tr td><>><String</td td><<#SYNC4>/td td>><읽기/쓰기</td td>><동기화 어댑터에서 사용할 일반 열입니다.>< </td></tr></table>

에 대한 Java 설명서입니다 android.provider.ContactsContract.RawContacts.

이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.

필드

ContentItemType

원시 연락처 ID가 에 추가될 #CONTENT_URI때 한 사람의 하위 디렉터리를 생성하는 결과의 MIME 형식입니다.

ContentType

특정 ID 값이 제공되지 않고 여러 원시 연락처가 반환될 수 있는 경우의 결과 #CONTENT_URI MIME 형식입니다.

속성

Class

Object의 런타임 클래스를 반환합니다.

(다음에서 상속됨 Object)
ContentUri

선택 조건과 일치하는 원시 연락처 행의 디렉터리를 요청하는 이 테이블의 content:// 스타일 URI입니다.

Handle

기본 Android instance 대한 핸들입니다.

(다음에서 상속됨 Object)
JniIdentityHashCode

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)
JniPeerMembers

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

PeerReference

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)
ThresholdClass

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

(다음에서 상속됨 Object)
ThresholdType

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

(다음에서 상속됨 Object)

메서드

Clone()

이 개체의 복사본을 만들고 반환합니다.

(다음에서 상속됨 Object)
Dispose()

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)
Dispose(Boolean)

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)
Equals(Object)

다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다.

(다음에서 상속됨 Object)
GetContactLookupUri(ContentResolver, Uri)

android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI 지정된 RawContacts 항목의 부모 android.provider.ContactsContract.Contacts 항목에 대한 스타일을 Uri 빌드합니다.

GetHashCode()

개체의 해시 코드 값을 반환합니다.

(다음에서 상속됨 Object)
GetLocalAccountName(Context)

이 열에 대한 #ACCOUNT_NAME 값 없이 삽입할 때 원시 연락처에 사용되는 기본값입니다.

GetLocalAccountType(Context)

이 열에 대한 #ACCOUNT_TYPE 값 없이 삽입할 때 원시 연락처에 사용되는 기본값입니다.

JavaFinalize()

가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다.

(다음에서 상속됨 Object)
Notify()

이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다.

(다음에서 상속됨 Object)
NotifyAll()

이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다.

(다음에서 상속됨 Object)
SetHandle(IntPtr, JniHandleOwnership)

Handle 속성을 설정합니다.

(다음에서 상속됨 Object)
ToArray<T>()

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)
ToString()

개체의 문자열 표현을 반환합니다.

(다음에서 상속됨 Object)
UnregisterFromRuntime()

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)
Wait()

현재 스레드가 각성될 때까지 대기하도록 합니다. 일반적으로 <알림을<> 받>거나<<> 중단/em>합니다.

(다음에서 상속됨 Object)
Wait(Int64)

현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다.

(다음에서 상속됨 Object)
Wait(Int64, Int32)

현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

IJavaPeerable.Disposed()

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)
IJavaPeerable.DisposeUnlessReferenced()

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)
IJavaPeerable.Finalized()

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)
IJavaPeerable.JniManagedPeerState

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

(다음에서 상속됨 Object)

확장 메서드

JavaCast<TResult>(IJavaObject)

Android 런타임 확인 형식 변환을 수행합니다.

JavaCast<TResult>(IJavaObject)

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

GetJniTypeName(IJavaPeerable)

각 동기화된 계정의 각 사용자에 대한 한 행의 연락처 정보를 포함하는 원시 연락처 테이블의 상수입니다.

적용 대상