【问题标题】:Android : Adding Notes to Existing ContactsAndroid : 向现有联系人添加备注
【发布时间】:2011-03-16 15:40:02
【问题描述】:

我正在尝试使用 ContactsContract api 向我的联系人添加一些注释。我不确定我是否完全理解各种联系人 ID 和原始联系人 ID。我的问题似乎与here 讨论的问题非常相似。

我想: 1. 查找特定联系人。 2.找到后,插入特定的注释

我的做法如下:

Cursor contacts = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null);

while(contacts.moveToNext()){

      Log.d("TC", "Found : " + name);

      int rid = contacts.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID);
      int rawContactID = contacts.getInt(rid);

      int nameIdx = contacts.getColumnIndex(ContactsContract.Data.DISPLAY_NAME);
      String name = contacts.getString(nameIdx);

      if <Some condition>{
            ContentValues contentValues =  new ContentValues();
            contentValues.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactID);
            contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE);
            contentValues.put(ContactsContract.CommonDataKinds.Note.NOTE, "Bazzinga !");
            int stat = getContentResolver().update(ContactsContract.Contacts.CONTENT_URI, contentValues, null , null);
            Log.d("TC", "Update returned : " + stat);
      }

}

我没有收到任何错误。但是联系人没有更新:(

【问题讨论】:

    标签: android contactscontract


    【解决方案1】:

    替换

    getContentResolver().update(...)
    getContentResolver().insert( Data.CONTENT_URI, contentValues ); 

    您还应该在 Data.CONTENT_URI 查询中有一个 where 语句。因为数据表可以有多个具有相同 raw_contact_id 的条目。您可以使用“Data.MIMETYPE = StructuredName.CONTENT_ITEM_TYPE”。

    【讨论】:

    • 在对文档的一些审查中,我知道我需要在数据表中为 RawContact 插入一行。我试试这个!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多