我正在尝试在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);
最大的挑战是缺乏良好的文档。我会很满意地拿到一些可行的复制粘贴代码来学习。
祝好,