在 Android 2.0 上添加联系人号码
Posted
技术标签:
【中文标题】在 Android 2.0 上添加联系人号码【英文标题】:Add number to contact on Android 2.0 【发布时间】: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 来学习,我会非常满意。
干杯,
【问题讨论】:
【参考方案1】:我找到了答案。如果您想立即添加几项内容,这不是原子性的,但是,嘿,谁需要愚蠢的原子性?
ContentValues values = new ContentValues();
values.put(Data.RAW_CONTACT_ID, new Integer(contactId).intValue());
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, dataValue);
values.put(Phone.TYPE, Phone.TYPE_CUSTOM);
values.put(Phone.LABEL, customLabel);
Uri dataUri = getContentResolver().insert(Data.CONTENT_URI, values);
【讨论】:
【参考方案2】:我在电子邮件地址方面也遇到过类似问题。这是我使用的有效解决方案:
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValue(Data.RAW_CONTACT_ID, id)
.withValue(Email.DATA, value)
.withValue(Email.MIMETYPE, .Email.CONTENT_ITEM_TYPE)
.withValue(Email.LABEL, label)
.withValue(Email.TYPE, Email.TYPE_CUSTOM)
.build());
ContentProviderResult[] res = cr.applyBatch(ContactsContract.AUTHORITY, ops);
同样的解决方案应该适用于电话号码。
【讨论】:
【参考方案3】:这些链接可能会提供一些帮助:
http://www.higherpass.com/android/Tutorials/Working-With-Android-Contacts/1/
http://developer.android.com/resources/samples/ContactManager/src/com/example/android/contactmanager/ContactAdder.html
【讨论】:
以上是关于在 Android 2.0 上添加联系人号码的主要内容,如果未能解决你的问题,请参考以下文章