ContactsContract.Data クラス

定義

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

[Android.Runtime.Register("android/provider/ContactsContract$Data", DoNotGenerateAcw=true)]
public sealed class ContactsContract.Data : Java.Lang.Object
[<Android.Runtime.Register("android/provider/ContactsContract$Data", DoNotGenerateAcw=true)>]
type ContactsContract.Data = class
    inherit Object
継承
ContactsContract.Data
属性

注釈

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。 通常、データ テーブルの各行は、1 つの連絡先情報 (電話番号など) とそれに関連付けられているメタデータ (勤務先または自宅番号など) を格納するために使用されます。

<h3>Data の種類</h3>

データは、あらゆる種類の連絡先データを保持できる汎用テーブルです。 特定の行に格納されるデータの種類は、行の#MIMETYPE値によって指定されます。これにより、#DATA1を介して#DATA15ジェネリック列の意味が決まります。 たとえば、データの種類が CommonDataKinds.Phone Phone.CONTENT_ITEM_TYPEされている場合、 #DATA1 列には電話番号が格納されますが、データの種類が CommonDataKinds.Email Email.CONTENT_ITEM_TYPE場合は、電子メール アドレス #DATA1 格納されます。 同期アダプターとアプリケーションは、独自のデータの種類を導入できます。

ContactsContract では、 CommonDataKinds.PhoneCommonDataKinds.Email など、定義済みのデータの種類が少数定義されています。便宜上、これらのクラスは DATA1 などのデータの種類固有のエイリアスを定義します。たとえば、 CommonDataKinds.Phone Phone.NUMBERContactsContract.Data Data.DATA1と同じです。

#DATA1 はインデックス付き列であり、クエリの選択で最も頻繁に使用されることが予想されるデータ要素に使用する必要があります。 たとえば、メール アドレスを表す行の場合、 #DATA1 は電子メール アドレス自体に使用する必要があります。一方、 #DATA2 などを電子メール アドレスの種類などの補助情報に使用できます。

慣例により、BLOB (バイナリ データ) を格納するために #DATA15 が使用されます。

特定のアカウントの種類の同期アダプターは、対応する生の連絡先で使用されるすべてのデータ型を正しく処理する必要があります。 そうしないと、データが失われたり破損したりする可能性があります。

同様に、相手のアカウントの種類に対して新しい種類のデータを導入することは控える必要があります。 たとえば、Google アカウントが所有する未加工の連絡先に "お気に入りの曲" のデータ行を追加した場合、Google 同期アダプターはこのデータの種類を処理する方法を知らないため、サーバーに同期されません。 したがって、新しいデータの種類は、通常、新しいアカウントの種類 (つまり、新しい同期アダプター) と共に導入されます。

<h3>Batch 操作</h3>

データ行は、従来の ContentResolver#insertContentResolver#update 、および ContentResolver#delete のメソッドを使用して挿入/更新/削除できますが、 ContentProviderOperation のバッチに基づく新しいメカニズムは、ほぼすべてのケースでより良い選択肢であることが証明されます。 バッチ内のすべての操作は 1 つのトランザクションで実行されるため、生の連絡先の電話側とサーバー側の状態が常に一貫しています。 また、バッチベースのアプローチははるかに効率的です。単一のトランザクションで実行するとデータベース操作が高速であるだけでなく、コンテンツ プロバイダーにコマンドのバッチを送信すると、プロセスとコンテンツ プロバイダーが実行されるプロセス間のコンテキスト切り替えに多くの時間が節約されます。

バッチ処理を使用する場合の裏返しは、大規模なバッチによってデータベースが長時間ロックされ、他のアプリケーションがデータにアクセスできず、ANR ("アプリケーションが応答しない" ダイアログ) を引き起こす可能性があるということです。

このようなデータベースのロックアップを回避するには、バッチに "yield points" を挿入してください。 yield ポイントは、コンテンツ プロバイダーに対して、次の操作を実行する前に、既に行われた変更をコミットし、他の要求に譲り、別のトランザクションを開き、処理操作を続行できることを示します。 yield ポイントはトランザクションを自動的にコミットしませんが、データベースで別の要求が待機している場合にのみコミットされます。 通常、同期アダプターは、バッチ内の各生の接触操作シーケンスの先頭に yield ポイントを挿入する必要があります。 ContentProviderOperation.Builder#withYieldAllowed(boolean)を参照してください。

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

個々のデータ行は、従来の ContentResolver#insert(Uri, ContentValues) メソッドを使用して挿入できます。 複数の行は、常にバッチとして挿入する必要があります。

従来の挿入の例:

ContentValues values = new ContentValues();
            values.put(Data.RAW_CONTACT_ID, rawContactId);
            values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
            values.put(Phone.NUMBER, "1-800-GOOG-411");
            values.put(Phone.TYPE, Phone.TYPE_CUSTOM);
            values.put(Phone.LABEL, "free directory assistance");
            Uri dataUri = getContentResolver().insert(Data.CONTENT_URI, values);

ContentProviderOperations を使用した場合と同じです。

ArrayList&lt;ContentProviderOperation&gt; ops =
                     new ArrayList&lt;ContentProviderOperation&gt;();

            ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
                     .withValue(Data.RAW_CONTACT_ID, rawContactId)
                     .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
                     .withValue(Phone.NUMBER, "1-800-GOOG-411")
                     .withValue(Phone.TYPE, Phone.TYPE_CUSTOM)
                     .withValue(Phone.LABEL, "free directory assistance")
                     .build());
            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

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

挿入と同様に、更新は増分的に行うか、バッチとして行うことができます。バッチ モードが推奨される方法です。

ArrayList&lt;ContentProviderOperation&gt; ops =
                     new ArrayList&lt;ContentProviderOperation&gt;();

            ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
                     .withSelection(Data._ID + "=?", new String[]{String.valueOf(dataId)})
                     .withValue(Email.DATA, "somebody@android.com")
                     .build());
            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

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

挿入と更新と同様に、削除は ContentResolver#delete メソッドを使用するか、ContentProviderOperation を使用して行うことができます。

ArrayList&lt;ContentProviderOperation&gt; ops =
                     new ArrayList&lt;ContentProviderOperation&gt;();

            ops.add(ContentProviderOperation.newDelete(Data.CONTENT_URI)
                     .withSelection(Data._ID + "=?", new String[]{String.valueOf(dataId)})
                     .build());
            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

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

<dl><dt>特定の連絡先の特定の種類のすべてのデータの検索</dt><dd>

Cursor c = getContentResolver().query(Data.CONTENT_URI,
                     new String[] {Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL},
                     Data.CONTACT_ID + &quot;=?&quot; + " AND "
                             + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'",
                     new String[] {String.valueOf(contactId)}, null);

/p< を >する

</dd><dt>特定の生の連絡先に対する特定の型のすべてのデータの検索</dt><dd>

Cursor c = getContentResolver().query(Data.CONTENT_URI,
                     new String[] {Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL},
                     Data.RAW_CONTACT_ID + &quot;=?&quot; + " AND "
                             + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'",
                     new String[] {String.valueOf(rawContactId)}, null);

</dd><dt>特定の未加工連絡先のすべてのデータの検索</dt><dd> ほとんどの同期アダプターは、生の連絡先自体と共に生の連絡先のすべてのデータ行を読み取ります。 そのため、 RawContactsEntityを使用する必要があります。 RawContacts も参照してください。 </dd></dl></p></dd></dl><h2>Columns</h2>

Data#CONTENT_URI クエリを使用して、多くの列を使用できます。 最適なパフォーマンスを得るために、必要な列のみにプロジェクションを明示的に指定する必要があります。

<table class="jd-sumtable"><tr><th colspan='4'>Data</th></tr><tr><td style="width: 7em;">long</td><td style="width: 20em;">#_ID</td><td style="width: 5em;">読み取り専用</td><td>Row ID。 同期アダプターは、更新中に行 ID を保持しようとします。 言い換えると、データ行を削除して再挿入するのは不適切な考えです。 同期アダプターは常に更新を行う必要があります。</td></tr><tr><td>String</td><td>#MIMETYPE</td><td>read/write-once</td><td>

この行によって表されるアイテムの MIME の種類。 一般的な MIME の種類の例としては、 <ul><li>CommonDataKinds.StructuredName StructuredName.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.Phone Phone.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.Email Email.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.Photo Photo.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.Organization Organization.CONTENT_ITEM_TYPE</li><li があります。 >CommonDataKinds.Im Im.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.Nickname Nickname.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.Note Note.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.StructuredPostal StructuredPostal.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.GroupMembership GroupMembership.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.Website Website.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.Event Event.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.Relation Relation.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.SipAddress SipAddress.CONTENT_ITEM_TYPE</li></ul>

</td></tr><tr><td>long</td><td>#RAW_CONTACT_ID</td><td>read/write-once</td><td>このデータが属する RawContacts テーブル内の行の ID です</td></tr><tr><td>int</td><td>#IS_PRIMARY</td><td>read/write</td><td> これが属する生の連絡先の種類のプライマリ エントリかどうか。 true の場合は "1"、false の場合は "0" です。 </td></tr><tr><td>int</td><td>#IS_SUPER_PRIMARY</td><td>read/write</td><td> これが所属する集約連絡先の種類のプライマリ エントリかどうか。 "スーパー プライマリ" であるデータ レコードも"プライマリ" である必要があります。 たとえば、スーパープライマリ エントリは、その種類の既定の連絡先値 (連絡先に使用する既定の電話番号など) として解釈される場合があります。</td></tr><tr><td>int</td><td>#DATA_VERSION</td><td>read-only</td><td>このデータ レコードのバージョン。 データ行が変更されるたびに、バージョンが上がります。 この値は単調に増加しています。</td></tr><tr><>tdAny type</td><td>#DATA1<br>#DATA2<br>#DATA3<br>#DATA4<br>#DATA5<br>#DATA6<br>#DATA7<br>#DATA8<br>#DATA9<br>#DATA10<br>#DATA11<br>#DATA12<br>#DATA13<br>#DATA14<br>#DATA15</td><td>read/write</td><td>

汎用データ列。 各列の意味は、 #MIMETYPEによって決まります。 慣例により、BLOB (バイナリ データ) を格納するために #DATA15 が使用されます。

特定の MIMETYPE に対して意味が明示的に定義されていないデータ列は使用しないでください。 同期アダプターで保持される保証はありません。 同期アダプター自体もこのような列を使用しないでください。代わりに、 #SYNC1-#SYNC4を使用する必要があります。

</td></tr><tr><td>Any type</td><br>#SYNC1<br>#SYNC2<>#SYNC3<br>#SYNC4</td><td>read/write</td><td>同期アダプターで使用するジェネリック列。 たとえば、写真の行では、画像の URL が SYNC1 に格納され、SYNC2 の状態 (読み込まれていない、読み込まれ、読み込まれ、エラー)、SYNC3 のサーバー側のバージョン番号、SYNC4.< のエラー コードが格納される場合があります。/td></tr></table>

関連付けられた最新の状態更新の一部の列は、暗黙的な結合でも使用できます。

<table class="jd-sumtable"><tr><th colspan='4'>join with StatusUpdates</th/tr><><tr><td style="width: 7em;">int</td><td style="width: 20em;">#PRESENCE</td><td style="width: 5em;">このデータ行にリンクされている読み取り専用</td><td>IM プレゼンス状態。 すべての IM 行にわたる連絡先のプレゼンスを含む #CONTACT_PRESENCEと比較します。 個々の状態定義については、 StatusUpdates を参照してください。 プロバイダーは、永続的ストレージにこの値を格納しないことを選択できます。 プレゼンス状態は定期的に更新される予定です。 </td></tr><tr><td>String</td><td>#STATUS</td><td>read-only</td><td>このデータ行にリンクされたLatest status update.</td></tr><trtr><long></td><td>#STATUS_TIMESTAMP</td><td>read-only</td><td>このデータ行の最新の状態が挿入/更新されたときの絶対時間 (ミリ秒)。</td></tr><trtr><td>String</td><td>#STATUS_RES_PACKAGE</td><td>read-only</td><td>この状態のリソースを含むパッケージ: ラベルとアイコン.</td></tr><tr><td>long</td><td>#STATUS_LABEL</td><td>read-only</td><td>このデータ行にリンクされている状態更新のソースを記述するラベルのリソース ID。 このリソースのスコープは #STATUS_RES_PACKAGE.</td></tr><tr><td>long</td><td>#STATUS_ICON</td><td>read-only</td><td>このデータ行にリンクされている状態更新プログラムのソースのアイコンのリソース ID。 このリソースのスコープは #STATUS_RES_PACKAGE.</td></tr></table>

関連付けられている未加工の連絡先の一部の列は、暗黙的な結合でも使用できます。 他の列は、このコンテキストでは関心を持たないものとして除外されます。

<table class="jd-sumtable"><tr><th colspan='4'>join with ContactsContract.RawContacts</th/tr><><tr><td style="width: 7em;">long</td><td style="width: 20em;">#CONTACT_ID</td><td style="width: 5em;">読み取り専用</td><td>このデータが属するContacts テーブル内の行の ID。</td></tr><tr><td>int</td><td>#AGGREGATION_MODE</td><td>read-only</td><td>See RawContacts.</td></tr><tr><td>int</td><td>#DELETED</td><td>read-only</td><td>See RawContacts.</td></tr></table>

関連付けられた集約された連絡先テーブル ContactsContract.Contacts の ID 列は、 RawContacts テーブルへの暗黙的な結合を介して使用できます(上記を参照)。 このテーブルの残りの列は、暗黙的な結合を介して使用することもできます。 これにより、メール アドレスなどの 1 つのデータ要素の値による検索が容易になります。

<table class="jd-sumtable"><tr><th colspan='4'>join with ContactsContract.Contacts</th/tr><><tr><td style="width: 7em;">String</td><td style="width: 20em;">#LOOKUP_KEY</td><td style="width: 5em;">read-only</td><td>See ContactsContract.Contacts</td></tr><tr><tdString>/td<>td<>#DISPLAY_NAME<>td<read-only>/td<>td<>ContactsContract.Contacts</td></tr><tr><tr>long</td><td>#PHOTO_ID<><tdtd>read-only</td><td>See ContactsContract.Contacts.</td></tr><tr><td>int</td><td>#IN_VISIBLE_GROUP</td><td>read-only</td><td>See ContactsContract.Contacts.</td></tr><tr><td>int</td><td>#HAS_PHONE_NUMBER</td><td>read-only</td><td>See ContactsContract.Contacts.</td></tr><tr><td>int</td><td>#STARRED</td><td>read-only</td><td>See ContactsContract.Contacts.</td></tr><tr><td>String</td><td>#CUSTOM_RINGTONE</td><td>read-only</td><td>See ContactsContract.Contacts.</td></tr><tr><td>int</td><td>#SEND_TO_VOICEMAIL</td><td>read-only</td><td>See ContactsContract.Contacts.</td></tr><tr><td>int</td><td>#CONTACT_PRESENCE</td><td>read-only</td><td>See ContactsContract.Contacts.</td></tr><tr><td>String</td><td>#CONTACT_STATUS</td><td>read-only</td><td>See ContactsContract.Contacts.</td></tr><tr><td>long</td><td>#CONTACT_STATUS_TIMESTAMP<><tdtd>read-only</td><td>See ContactsContract.Contacts.</td></tr><tr><td>String</td><td>#CONTACT_STATUS_RES_PACKAGE</td><td>read-only</td><td>See ContactsContract.Contacts.</td></tr><tr><td>long</td><td>#CONTACT_STATUS_LABEL</td><td>read-only</td><td>See ContactsContract.Contacts.</td></tr><tr><td>long</td><td>#CONTACT_STATUS_ICON</td><td>read-only</td><td>See ContactsContract.Contacts.</td></tr></table>

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

フィールド

名前 説明
ContentType

#CONTENT_URIからの結果の MIME の種類。

ExtraAddressBookIndex

このクエリ パラメーターを URI に追加して、アドレス帳インデックスによってカーソルの追加としてグループ化された行数を取得します。

ExtraAddressBookIndexCounts

対応するグループのグループ数の配列。

ExtraAddressBookIndexTitles

カーソル内のデータと同じ順序で返されるアドレス帳インデックス タイトルの配列。

VisibleContactsOnly

Data#CONTENT_URIのブール値パラメーター。

プロパティ

名前 説明
Class

この Objectのランタイム クラスを返します。

(継承元 Object)
ContentUri

選択条件に一致するデータ行のディレクトリを要求する、このテーブルの content:// スタイル URI。

Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

(継承元 JavaObject)
JniPeerMembers

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)
ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)

メソッド

名前 説明
Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

(継承元 JavaObject)
Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
DisposeUnlessReferenced()

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

(継承元 JavaObject)
Equals(Object)

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

(継承元 JavaObject)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
GetContactLookupUri(ContentResolver, Uri)

指定したandroid.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI エントリの親Uriエントリのandroid.provider.ContactsContract.Contacts スタイルContactsContract.Dataを作成します。

GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
JavaFinalize()

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

(継承元 JavaObject)
ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

(継承元 JavaObject)
IJavaPeerable.Finalized()

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

(継承元 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

(継承元 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

(継承元 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

(継承元 JavaObject)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

生の接触に関連付けられたデータ ポイントを含むデータ テーブルの定数。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象