gpt4 book ai didi

android - 如何只更新联系人而不是添加同步适配器

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

我的应用程序数据库中存储的号码很少。我想在联系人应用程序中匹配这些数字,并使用 mimetype 更新该联系人。基本上 Whatsapp 是怎么做的。他们同步所有联系人,并且他们的应用程序图标出现联系。

我已经完成了同步部分,如果我添加了新的联系人,那么我就可以在联系人中显示我的应用程序图标。但我的要求是只更新现有联系人。

这是我尝试更新的联系人,

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true))
.withValueBackReference(Data.RAW_CONTACT_ID,id)
.withValue(Data.MIMETYPE, MIMETYPE)
.withValue(Data.DATA1, "Username")
.withValue(Data.DATA2, "Ite's Me")
.build());

try {
context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}
catch (Exception e) {
e.printStackTrace();
}

rawContactid 我正在从

获取
Cursor cursor = context.getContentResolver().query(Data.CONTENT_URI, new String[] {Data.RAW_CONTACT_ID, Data.DISPLAY_NAME, Data.MIMETYPE, Data.CONTACT_ID }, 
ContactsContract.CommonDataKinds.Phone.NUMBER + "= ?",
new String[] {phonenumb}, null);

我无法将联系人添加到该联系人中。我究竟做错了什么。有人可以帮我解决这个问题吗?

提前致谢。

最佳答案

问题是您正在使用 withValueBackReference 来引用原始联系人 ID。这将尝试使用您的参数作为批处理中先前操作的索引来获取原始联系人的 ID,即如果 id=0,它将返回到第一个操作,如果它是新原始操作的插入联系人,使用生成的 ID 作为联系人数据插入的原始联系人 ID。你想在这里使用 withValue,因为你已经有了原始联系人 ID。

关于android - 如何只更新联系人而不是添加同步适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30259075/

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