【发布时间】:2011-01-13 10:56:51
【问题描述】:
我正在尝试将电话号码添加到 Droid 手机上已存在的联系人。在创建联系人的同时执行此操作很简单,因为在创建 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);
最大的挑战是大量缺乏良好的文档。如果能拿到一些工作中的 copypasta 来学习,我会非常满意。
干杯,
【问题讨论】: