【问题标题】:Modify native contact programmatically以编程方式修改本机联系人
【发布时间】:2012-05-15 14:43:47
【问题描述】:

我正在尝试以编程方式修改联系人的名字和姓氏。 我用来完成这项工作的代码 sn-p 如下:

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

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

问题是对于某些联系人的姓名和姓氏没有修改,而是修改了电话类型。 实际上,我对原因没有任何线索。 任何建议表示赞赏。


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

        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 删除同一个联系人时遇到问题。我该如何解决这个问题。
  • 这里是什么“mSmartphoneContactId”..它是指 Data.ID 还是 RawContacts._ID。请告诉我
  • 请分享代码以将联系人添加到本地联系人中,以及如何获取该 id 以及使用该 id 如何编辑和删除联系人。

标签: android contacts


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 2021-01-18
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多