android - 更新多个联系人电话号码

标签 android contacts android-contacts

我尝试使用以下方法更新特定联系人的多个电话号码 代码:

for(int j=0;j<allPhoneNumbersLength;j++)
{
PhoneInfo phoneInfo = (PhoneInfo) allPhoneNumbers.elementAt(j);
String phoneValue = phoneInfo.getValue();
int phoneType = phoneInfo.getIndex(); // phoneType = Phone.TYPE_HOME,  Phone.TYPE_WORK, etc
ContentProviderOperation.Builder builderPhone = ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withSelection(ContactsContract.Data.CONTACT_ID + "=?"+" AND "+ContactsContract.Data.MIMETYPE + "=?" + " AND "+Phone.TYPE+"=?",  new String[]{String.valueOf(contactID), Phone.CONTENT_ITEM_TYPE, String.valueOf(phoneType)});
if(phoneType == Phone.TYPE_HOME)
{
builderPhone.withValue(Phone.NUMBER, phoneValue)
.withValue(Phone.TYPE, Phone.TYPE_HOME);
}
else if(phoneType == Phone.TYPE_WORK)
{
builderPhone.withValue(Phone.NUMBER, phoneValue)
.withValue(Phone.TYPE, Phone.TYPE_WORK);
}
else if(phoneType == Phone.TYPE_FAX_HOME)
{
builderPhone.withValue(Phone.NUMBER, phoneValue)
.withValue(Phone.TYPE, Phone.TYPE_FAX_HOME);
}
op_list.add(builderPhone.build());

}
getContentResolver().applyBatch(ContactsContract.AUTHORITY, op_list);

使用此代码我尝试更新三个号码,但仅更新“TYPE_FAX_HOME” 号码已更新,另外两个号码已从联系人中删除。

请帮助我。

最佳答案

我从您的代码中了解到,您对所有 3 种类型使用相同电话号码值。因此,在显示时,android 将仅显示联系人的 1 个。但如果您实际上编辑联系人,您可以看到,所有 3 种类型都已填充了相同的号码。

P.S:我假设您尝试编辑的联系人已经为所有 3 种类型填充了一些号码。如果没有,请创建它们,然后尝试运行您的代码。

关于android - 更新多个联系人电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14785210/

相关文章:

android - 如何使用 SHOW_OR_CREATE_CONTACT 操作正确设置 android Intent ?

android - 如何检测联系人的默认电话号码(如果已设置)

android - 使用 FlexboxLayoutManager 来查看不同高度的 RecyclerView 项目

存储名字和姓氏的算法和数据结构

android - WebView 第一次不加载静态页面

iOS AddressBook - 获取联系人图像崩溃

java - 一种在设备上保存 Arraylist 的方法?

java - Android 中的 Intent 类型 ACTION_SENDTO。它是如何工作的?

Android:在双卡手机中 getSimCountryIso() 返回哪个卡?

android - 从左向右移动图像然后旋转动画