在 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 上添加联系人号码的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 上通过电话号码获取联系人

根据电话号码添加原始联系人时联系人重复

android怎么 添加联系人到手机

如何从android中的联系人中搜索号码?

我可以在 android 上启动联系人应用程序并实际获取所选联系人的手机号码吗?

从 Android 联系人中检索电话号码在三星上不起作用