我尝试使用以下方法更新特定联系人的多个电话号码 代码:
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/