gpt4 book ai didi

android - 使用 ContentProviderOperation 更新和插入联系人

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:43 24 4
gpt4 key购买 nike

我在 Android 2.0+ 上遇到了更新/插入联系人的问题。电话簿为空时插入新联系人没有问题但是当我第二次这样做时,一些像 TEL、EMAIL 这样的文件被加倍并跳闸等。但 N、FN、ORG 都可以(一份)。

在得到这个论坛其他成员的建议后,我先更新了一个联系人,然后 ContentProviderResult[] 返回了带有 null 的 uri,然后我执行了一个插入操作,它就成功了好的,但之后我进行了更新,所有联系人都聚合为一个 - 我有 1 个联系人 insted 3 存在于电话簿中。这个已损坏,联系人字段是随机构建的。

我设置了 Google 帐户。

代码:

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newUpdate(ContactsContract.RawContacts.CONTENT_URI)
.withValue(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_DISABLED)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName)
.build());

// add name
ContentProviderOperation.Builder builder = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.StructuredName.PHONETIC_FAMILY_NAME, name);

// phones
ContentProviderOperation.Builder builder = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneValue);
builder.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType);
builder.withValue(ContactsContract.CommonDataKinds.Phone.LABEL, phoneLabel);
ops.add(builder.build());

// emails ...
// orgs ...

try {

ContentProviderResult[] result = mContentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
}
} catch (Exception e) {
Log.e(LOG_TAG, "Exception while contact updating: " + e.getMessage());
}

这个解决方案有什么问题?聚合引擎如何工作?

我很乐意提供帮助。

假的

最佳答案

如果您想进行更新,您必须为每个 ContentProviderOperation 提供一个 where 子句,参见 herehere .

关于android - 使用 ContentProviderOperation 更新和插入联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2956633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com