修改本机接触编程本机

2023-09-07 10:47:31 作者:不羡江中仙

我试图以编程方式修改联系人的名字和姓氏。我已经为了做这项工作中使用的code段是下列之一:

I'm trying to modify contact first name and last name programmatically. The code snippet that I've used in order to do the job is the following one:

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 与包含在列中的数据填充

The mSmartphoneContactKey is filled in with the data contained in the column

ContactsContract.Contacts._ID

这是坐在我的投影矩阵,当我读到使用内容提供商联系。

which is sitting in my projection array when I read contacts using content provider.

的问题是,对于某些联系人的名字和姓不被修改,并在电话类型代替改性。其实我没有关于原因的线索。任何的建议是AP preciated。

The problem is that for some contacts the name and last name are not modified and the phone type is modified instead. Actually I don't have any clue about the cause. Any advice is appreciated.

我读过进一步的文档数据表是一个我必须使用。我修改如下code ...仍无法正常工作

I've read further the documentation the Data table is the one I have to use. I've modified the code as below...still not working

        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() );

请帮帮我!

推荐答案

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

Ok Solved! Wrong ID passed. Need to retrieve the ID along the data from the DATA table.