我正在尝试在单个联系人中更新组织名称,但它不适用于我,我使用以下代码
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Organization.COMPANY,company)
.build());
请帮助我,提前致谢。
答案 0 :(得分:1)
您所撰写的内容并未提及您要更新的哪个联系人。
Contact
是根据一个或多个RawContacts
构建的,您需要传递要更新的ContentProviderOperation
RawContact._ID
。
每个RawContact
都是根据一个或多个Data
条目构建的,如果您想要更新特定的Data._ID
,那就更好了。
假设您只有RawContact._ID
及其rawContactId
,那么应该更新它:
String selection = Data.RAW_CONTACT_ID + "=? AND " + Data.MIMETYPE + "=?";
String[] selectionArgs = new String[] { rawContactId, CommonDataKinds.Organization.CONTENT_ITEM_TYPE };
opt.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withSelection(selection, selectionArgs)
.withValue(ContactsContract.CommonDataKinds.Organization.COMPANY, company)
.build());
这告诉数据库更新属于rawContactId
的数据行,类型为Organization
答案 1 :(得分:0)
String orgWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
String[] orgWhereParams = new String[]{String.valueOf(id),
ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE};
operationList
.add(ContentProviderOperation
.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(orgWhere, orgWhereParams)
.withValue(
ContactsContract.CommonDataKinds.Organization.DATA,
guCon.getCompany()).build());