1

我正在编写一个将 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。

4

1 回答 1

2

根据我了解到的情况,您在存储或使用联系人时最好使用 LOOKUP_KEY,由于聚合,使用联系人 ID 不会保持静态。

于 2012-04-12T12:56:10.983 回答