为什么 Android 联系人修改会产生创建(未知)联系人条目的副作用?

发布于 2024-10-11 09:50:10 字数 1146 浏览 3 评论 0原文

我在 Android 2.2 设备上遇到一个奇怪的问题。我有一个现有的 联系人,我通过以下方式对其进行修改操作:

ContentProviderOperation.Builder builder =
ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
    .withSelection(ContactsContract.Data.CONTACT_ID + "=? AND " +
    ContactsContract.Data.MIMETYPE + "=?",
    new String[]{id,
    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE})
    .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,displayName)
    .withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME,familyName)
    .withValue(ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME,middleName)
    .withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,givenName)
    .withValue(ContactsContract.CommonDataKinds.StructuredName.PREFIX,honorificPrefix)
   .withValue(ContactsContract.CommonDataKinds.StructuredName.SUFFIX,honorificSuffix);

mApp.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

联系人被正确修改。所有新值都会显示 作为联系人姓名。

但是,如果我查看我的联系人应用程序,就会发现一个新联系人,名为 修改后出现“(未知)”。我可以插入尽可能多的 我想要的联系人,但每次修改都会创建一个新的“(未知)”联系人。

有人有什么想法吗?

I have a weird issue on an Android 2.2 device. I have an existing
contact and I do a modify operation on it via:

ContentProviderOperation.Builder builder =
ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
    .withSelection(ContactsContract.Data.CONTACT_ID + "=? AND " +
    ContactsContract.Data.MIMETYPE + "=?",
    new String[]{id,
    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE})
    .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,displayName)
    .withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME,familyName)
    .withValue(ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME,middleName)
    .withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,givenName)
    .withValue(ContactsContract.CommonDataKinds.StructuredName.PREFIX,honorificPrefix)
   .withValue(ContactsContract.CommonDataKinds.StructuredName.SUFFIX,honorificSuffix);

mApp.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

The contact gets modified correctly. All of the new values show up
for the Contacts name.

However, if I look in my Contacts app there is a new contact called
"(Unknown)" that shows up after I do a modify. I can insert as many
contacts as I want but every modify creates a new "(Unknown)" contact.

Anyone have any ideas?

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

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

发布评论

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

评论(1

旧人 2024-10-18 09:50:10

作为导致问题的较大函数的一部分,对 RAW_CONTACT_ID 进行了错误的 newInsert() 调用。抱歉问了浪费时间的问题。

There was an errant newInsert() call for the RAW_CONTACT_ID as part of the larger function which was causing the problem. Sorry for the time wasting question.

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