Android:向现有联系人添加注释

发布于 2024-10-22 17:24:32 字数 1350 浏览 9 评论 0原文

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

我想要 : 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);
      }

}

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

I'm trying to use the ContactsContract api to add some notes to my contacts. I'm not sure I fully understand the various contact IDs and Raw Contact IDs. My problem seems pretty similar to what is discussed here.

I want to :
1. Find a specific contact.
2. When found, insert specific notes

I'm doing it in the following way:

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

}

I get no errors. But the contact doesn't get updated :(

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一口甜 2024-10-29 17:24:32

替换

getContentResolver().update(...)

with

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

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

Replace the

getContentResolver().update(...)

with

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

Also you should have a where statement in the Data.CONTENT_URI query. Because Data table can have multiple entries with same raw_contact_id. You can use "Data.MIMETYPE = StructuredName.CONTENT_ITEM_TYPE".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文