2017-02-20 14 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

Contactは、RawContactsから1つ以上作成されています。ContentProviderOperationに更新するRawContact._IDを渡す必要があります。

RawContactは、Dataのエントリの1つから作成されます。具体的に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であること

+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()); 
関連する問題