以编程方式更新android联系人中的组织名称

时间:2017-02-20 15:04:53

标签: android android-contacts

我正在尝试在单个联系人中更新组织名称,但它不适用于我,我使用以下代码

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());

请帮助我,提前致谢。

2 个答案:

答案 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());