0

Я пытаюсь добавить данные Contact в StructuredName со следующим кодом. Проблема заключается в добавлении GIVEN_NAME, но другие поля не добавляются.Проблемы с добавлением данных в ContactsContract.CommonDataKinds.StructuredName

ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
       .withValue(
         ContactsContract.Data.MIMETYPE, 
         ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
       .withValue(
         ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, 
         givenName).build()); 

     ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
       .withValue(
         ContactsContract.Data.MIMETYPE, 
         ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
       .withValue(
         ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, 
         familyName).build()); 

FAMILY_NAME не добавлено. Если я комментирую код блока для GIVEN_NAME .. FAMILY_NAME добавляется. Но поля отдыха не добавляются.

+0

Можете ли вы дать нам больше контекста в коде? – pablisco

+0

Проблема решена. Ответил в сообщении ниже :) –

ответ

2

Если бы .build() после добавления всех данных следующим образом:

ops.add(ContentProviderOperation 
      .newInsert(ContactsContract.Data.CONTENT_URI) 
      .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
      .withValue(
        ContactsContract.Data.MIMETYPE, 
        ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
      .withValue(
        ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, 
        givenName) // Don't call build() here 


      .withValue(
        ContactsContract.Data.MIMETYPE, 
        ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
      .withValue(
        ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, 
        familyName) 

      .withValue(
        ContactsContract.Data.MIMETYPE, 
        ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
      .withValue(
        ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME, 
        middleName) 

      .withValue(
        ContactsContract.Data.MIMETYPE, 
        ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
      .withValue(
        ContactsContract.CommonDataKinds.StructuredName.PREFIX, 
        prefix) 

      // and other data that goes into StructuredName 


      .build()); // Now call build() 
+0

Итак, как я могу добавить поля условно? Например, 'if (familyName! = Null) // добавить фамилию' ... – Deqing