Droid-phoneの既存の連絡先に電話番号を追加しようとしています。ContentProviderOperationを作成するときに提供する後方参照は単純に0であるため、連絡先の作成と同時にそれを行うのは簡単です。ただし、次のように表示名を照会して後方参照を見つけようとしても機能しません。
Cursor rawContactsReferenceCursor =
contentResolver.query(Data.CONTENT_URI,
new String[]{Data.RAW_CONTACT_ID},
Data.DISPLAY_NAME+"=\""+displayName+"\"", null, null);
生の連絡先IDを取得しますが、次のコードはIndexOutOfBoundExceptionを生成するだけです(rawConcactReferenceIDは、前のクエリから取得した変数です)。
ArrayList<ContentProviderOperation> op_list =
new ArrayList<ContentProviderOperation>();
op_list.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, rawConcactReferenceID)
.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
.withValue(Phone.NUMBER, testNumber)
.withValue(Phone.TYPE, Phone.TYPE_CUSTOM)
.withValue(Phone.LABEL, testLabel)
.build());
ContentProviderResult[] result =
contentResolver.applyBatch(ContactsContract.AUTHORITY, op_list);
大きな課題は、優れたドキュメントが大幅に不足していることです。勉強するためにいくつかの実用的なコピーパスタを手に入れることができれば、私は非常に満足しています。
乾杯、