我正在编写一个将 android 联系人信息与服务器信息同步的应用程序。服务器信息更改后,我正在更新所有原始联系人,每个人都很高兴。但我发现在用几个原始联系人更新联系人后,联系人 ID 的值增加了 1。如果我从设备联系人 ID 更新联系人仍然是相同的。
假设您与下一个数据有联系:
contact_id : 42
raw_contact_ids : { 43, 44, 45 }
(1) 更新后您将拥有:
contact_id : 43
raw_contact_ids : { 43, 44, 45 }
(2) 但是,如果您使用用户界面更新相同的联系人,您将获得:
contact_id : 42
raw_contact_ids : { 43, 44, 45 }
我不理解这样的行为。我认为这可能是因为联系人聚合,但我不明白为什么(2)中的结果与(1)中的结果不同。我正在使用下一个代码来更新原始联系人中的电话号码数据:
字符串 selectPhone = Data.RAW_CONTACT_ID + "=? AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'" + " AND " + Phone.TYPE + "=? AND " + Phone._ID + "=?"; String[] selectArgs = new String[] { String.valueOf(rawContactId), String.valueOf(from.getType()), String.valueOf(id) }; ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) .withSelection(选择电话,选择参数) .withValue(Phone.NUMBER, newNumber) 。建造());
有人可以解释一下我做错了什么吗?我真的需要那些联系人 ID。