ContactsContract.RawContacts クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。
[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
- 継承
- 属性
注釈
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの連絡先情報の 1 行が含まれます。 同期アダプターと連絡先管理アプリは、この API の主要なコンシューマーです。
<h3>集計</h3>
生の連絡先が挿入されるとすぐに、またはその構成データが変更されるたびに、プロバイダーは、生の連絡先が他の既存の生の連絡先と一致する場合はチェックし、その場合はそれらの連絡先で集計されます。 集計は、集計連絡先への参照であるフィールドの#CONTACT_ID
変更によってテーブルに反映されますRawContacts
。
構造化名、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, "Mike Sullivan");
getContentResolver().insert(Data.CONTENT_URI, values);
</p>
バッチメソッドは、はるかに好ましいです。 1 つのデータベース トランザクションに生の連絡先とその構成データ行が挿入され、最大で 1 つの集計パスが発生します。
ArrayList<ContentProviderOperation> ops =
new ArrayList<ContentProviderOperation>();
...
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, "Mike Sullivan")
.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 + "<>0", null, null, null);
...
Cursor c2 = getContentResolver().query(rawContactUri,
RawContacts.DELETED + "<>0", null, null, null);
</p>
未加工の連絡先をそれに関連付けられているすべてのデータと共に読み取る最善の方法は、 ディレクトリを Entity
使用することです。 生の連絡先にデータ行がある場合、エンティティ カーソルには各データ行の行が含まれます。 生の連絡先にデータ行がない場合でも、カーソルには未加工の連絡先レベル情報を含む 1 つの行が含まれます。
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><<>td>long</td td><td<>#_ID
td><>読み取り専用</td td>><行 ID。 同期アダプターでは、更新中に行 ID を保持する必要があります。 言い換えると、同期アダプターは、未加工の連絡先を削除して再挿入するのではなく、更新する方がはるかに優れています。</td></tr tr><><td>long</td td<>td>#CONTACT_ID
</td 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 td><>集計プロセスのプログラムによる制御を可能にするメカニズム。 使用できる値は、、#AGGREGATION_MODE_DEFAULT
#AGGREGATION_MODE_DISABLED
および です#AGGREGATION_MODE_SUSPENDED
。 「」もAggregationExceptions
参照してください。</td></tr td<>><>int</td td<>td<>#DELETED
/td td<>td>read/write</td td><>The "deleted" flag: "0" by default, "1" if the row has marked for deletion. 未加工の連絡先で が呼び出されると android.content.ContentResolver#delete
、削除のマークが付き、その集約連絡先から削除されます。 同期アダプターは、サーバー上の未加工の連絡先を削除し、ContactResolver.delete をもう一度呼び出し、今度はクエリ パラメーターをContactsContract#CALLER_IS_SYNCADAPTER
渡してデータの削除を終了します。</td></tr tr><<>td>int</td td><#STARRED
>< td td<>>read/write</td td td><>お気に入りの連絡先のインジケーター: お気に入りの場合は '1'、それ以外の場合は '0' です。 このフィールドを変更すると、対応する集約連絡先に直ちに影響します。その集約連絡先の生の連絡先にスターが付いている場合、連絡先自体は星付きとしてマークされます。</td></tr tr>><<td>String</td td<>td>#CUSTOM_RINGTONE
</td td td><>read/write</td td td><>生の連絡先に関連付けられたカスタム着信音。 通常、これは、意図を使用 android.media.RingtoneManager#ACTION_RINGTONE_PICKER
して起動されたアクティビティによって返される URI です。 集計連絡先の対応する値に影響を与えるためには、生の接触が挿入されるときにこのフィールドを設定する必要があります。 連絡先にカスタム着信音を設定するには、代わりに フィールドContactsContract.Contacts#CUSTOM_RINGTONE Contacts.CUSTOM_RINGTONE
を使用します。</td></tr tr><<>td>int</td td><#SEND_TO_VOICEMAIL
>< td td<>td>read/write</td td td><>この生の連絡先からの通話をボイス メール ('1') に直接転送する必要があるかどうかを示すインジケーター ('0')。 集計連絡先の対応する値に影響を与えるためには、生の接触が挿入されるときにこのフィールドを設定する必要があります。</td></tr tr><<>td>String</td td><>#ACCOUNT_NAME
< td td td><>read/write-once</td td td<>>この行が属するアカウント インスタンスの名前。この行が #ACCOUNT_TYPE
とペアになっていると、特定のアカウントが識別されます。 たとえば、Google アカウントの場合、これは Gmail アドレスになります。 これは、生の接触が挿入された時点で設定され、後で変更されることはありません。</td/tr tr><td><>String</td td>><<#ACCOUNT_TYPE
/td 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 td><>read/write-once</td td td<>><>
この行が属するアカウント内のデータ セット。 これにより、同じアカウントの種類に対して複数の同期アダプターが互いのデータを区別できるようになります。 、#ACCOUNT_NAME
、および #DATA_SET
の#ACCOUNT_TYPE
組み合わせは、1 つの同期アダプターに関連付けられているデータのセットを識別します。
これは既定では空であり、完全に省略可能です。 これは、複数の同期アダプターが同じアカウントの種類とアカウント名に対して個別のデータを入力している場合にのみ設定する必要があります。
これは、生の接触が挿入された時点で設定され、後で変更されることはありません。
</td/tr tr<>td>><String</td td><>#SOURCE_ID
< td td td<>>読み取り/書き込み</td td>><この行をソース アカウントに一意に識別する文字列。>< 通常は、生の接触が挿入された時点で設定され、後で変更されることはありません。 重要な例外の 1 つは、新しい未加工の連絡先です。アカウント名と種類 (場合によってはデータ セット) は含まれますが、ソース ID はありません。これは、新しい連絡先をサーバー側で作成する必要があり、その ID が電話の対応するSOURCE_ID フィールドに格納されていることを同期アダプターに示します。 </td></tr tr>><<td>int</td td><>#VERSION
< td/td><td td>読み取り専用</td td><>この行またはその関連データが変更されるたびに更新されるバージョン番号。 このフィールドは、未加工の連絡先のオプティミスティック ロックに使用できます。 </td></tr tr><td>><int</td td<>td>#DIRTY
</td><td td>が変更されたことを示す#VERSION
読み取り/書き込<み/td td td><>フラグ。この行は、その所有アカウントで同期する必要があります。 URI にクエリ パラメーターが指定されていない限り、未加工の連絡先が変更されるたびに、値は自動的に ContactsContract#CALLER_IS_SYNCADAPTER
"1" に設定されます。 同期アダプターでは、不要な同期を防ぐために、常にこのクエリ パラメーターを指定する必要があります。ユーザーはサーバー上のデータを変更し、同期アダプターは電話の連絡先を (CALLER_IS_SYNCADAPTER フラグなしで) 更新します。このフラグは DIRTY フラグを設定し、サーバーに変更を反映するように同期をトリガーします。 </td></tr tr td><>><String</td td<>td<>#SYNC1
/td td<>td>読み取り/書き込<み/td td td><>同期アダプターで任意に使用するために提供される汎用列。 コンテンツ プロバイダーは、同期アダプターに代わってこの情報を格納しますが、いかなる方法でも解釈しません。 </td></tr tr><td>><String</td td><td<#SYNC2
>/td td td><>読み取り/書き込<み/td td td><>同期アダプターで使用するための汎用列。 </td></tr tr><td>><String</td td><td<#SYNC3
>/td td td><>読み取り/書き込<み/td td td><>同期アダプターで使用するための汎用列。 </td></tr tr><td>><String</td td><td<#SYNC4
>/td td td><>読み取り/書き込<み/td td td><>同期アダプターで使用するための汎用列。 </td></tr></table>
の android.provider.ContactsContract.RawContacts
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
フィールド
ContentItemType |
未加工の連絡先 ID が に |
ContentType |
特定の ID 値が指定されず、複数の生の連絡先が返される場合の |
プロパティ
Class |
この |
ContentUri |
選択基準に一致する未加工の連絡先行のディレクトリを要求する、このテーブルの content:// スタイル URI。 |
Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
JniIdentityHashCode |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
JniPeerMembers |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 |
PeerReference |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。 (継承元 Object) |
ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。 (継承元 Object) |
メソッド
Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
Dispose() |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
Dispose(Boolean) |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
GetContactLookupUri(ContentResolver, Uri) |
指定 |
GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
GetLocalAccountName(Context) |
この列の |
GetLocalAccountType(Context) |
この列の |
JavaFinalize() |
ガベージ コレクションがオブジェクトへの参照がなくなったと判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドをウェイクアップします。 (継承元 Object) |
NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドをウェイクアップします。 (継承元 Object) |
SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
ToArray<T>() |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
UnregisterFromRuntime() |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
Wait() |
現在のスレッドが起動するまで待機します。通常<>は、通知</em> または <em>割り込み</em によって待機します>。 (継承元 Object) |
Wait(Int64) |
現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。 (継承元 Object) |
Wait(Int64, Int32) |
現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。 (継承元 Object) |
明示的なインターフェイスの実装
IJavaPeerable.Disposed() |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
IJavaPeerable.Finalized() |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
IJavaPeerable.JniManagedPeerState |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 (継承元 Object) |
拡張メソッド
JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
JavaCast<TResult>(IJavaObject) |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 |
GetJniTypeName(IJavaPeerable) |
未加工の連絡先テーブルの定数。同期された各アカウントの各ユーザーの 1 行の連絡先情報が含まれます。 |