欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 手机通讯录修改联系人失败的坑

程序员文章站 2022-09-28 12:12:57
Android 手机通讯录修改联系人失败的坑,一般我们添加联系人的时候,是通过查询 raw_contacts 表的 _id 字段,获取最末尾的 _id 值 +1 便是该表中需要添加...

Android 手机通讯录修改联系人失败的坑,一般我们添加联系人的时候,是通过查询 raw_contacts 表的 _id 字段,获取最末尾的 _id 值 +1 便是该表中需要添加的 contact_id 值。

一般情况下,contact_id 的值应该和 _id 的值是相等的。但是在第三方应该的大量增删改查下,会出现 contact_id 和 _id 不相等的情况。也就是说,即使你在代码中存入的 contact_id 为当前的 _id 值,但真正执行数据库操作时,存入的确实之前 contact_id + 1 的值。

可是,contact_id 的值和 _id 值不相同会导致什么情况呢。

根据网上的资料,大部分开发者查询联系人时,是使用 raw_contacts 表的 contact_id 值和 data 表的 raw_contact_id 进行匹配。如果 raw_contacts 表中的contact_id 值和 _id 值相等时,可以正常使用。一旦 contact_id 值和 _id 值出现不相等的情况,就会出现修改联系人失败甚至修改到其他的联系人这些情况。

为什么呢?原因是系统默认使用 raw_contacts 表的 _id 值和 data 表的 raw_contact_id 进行匹配。所以当我们拿到 raw_contacts 表的 contact_id 值去查找病修改联系人时,出现失败的情况。

所以,我们在开发的时候,尽量使用 raw_contacts 表 _id 值对 data 表的 raw_contact_id 值进行匹配。从而不会导致匹配失败的问题。