2017-02-20 73 views
0

我想更新單個聯繫人的組織名稱,但它不工作對我來說,我使用下面的代碼更新組織名稱編程

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

請幫助我,在此先感謝。

回答

1

你寫什麼沒有提到要更新接觸。

A Contact由一個或多個RawContacts構建而成,您需要通過要更新的ContentProviderOperationRawContact._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()); 

這告訴DB更新屬於rawContactId,並Organization類型的數據行(S)

+0

謝謝老兄,你救了我的一天。 –

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