以编程方式修改本机联系人

时间:2012-05-15 14:43:47

标签: android contacts

我正在尝试以编程方式修改联系人的名字和姓氏。 我为完成这项工作而使用的代码片段如下:

operations.add( ContentProviderOperation.newUpdate( Data.CONTENT_URI )
  .withSelection( RawContacts._ID + "=?",
  new String[] { String.valueOf( mSmartphoneContactKey) } )
    .withValue( ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,
     mContactName.getEditableText().toString() )
      .withValue( ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME,
        mContactLastName.getEditableText().toString() )                          
        .build() );

mSmartphoneContactKey填入了

列中包含的数据
ContactsContract.Contacts._ID

当我使用内容提供商阅读联系人时,它位于我的投影数组中。

问题是,对于某些联系人,名称和姓氏不会被修改,而是修改手机类型。 其实我对这个原因一无所知。 任何建议都表示赞赏。


我已经进一步阅读了文档,数据表是我必须使用的。 我修改了下面的代码......仍然无法正常工作

        operations.add( ContentProviderOperation.newUpdate( Data.CONTENT_URI )
                .withSelection( Data._ID + " = ? AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE + "'",
                         new String[] { String.valueOf( mSmartphoneContactId ) } )
                         .withValue( ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, mContactName.getEditableText().toString() )
                         .withValue( ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, mContactLastName.getEditableText().toString() )                            
                         .build() );

请帮助我!

1 个答案:

答案 0 :(得分:2)

好的解决了! 错误的ID通过了。 需要从DATA表中的数据中检索ID。