2013-05-22 38 views
2

我試圖保存與所有可用字段中的數據聯繫。 但由於某種原因,並非所有數據都被保存。 只有似乎工作領域是:Android ContentProvider applyBatch不保存所有聯繫人數據

  • StructuredName
  • 電話
  • 組織

誰能給我在我的錯誤在於一個想法?

public void saveContact(Context context) 
    {  
     ArrayList<ContentProviderOperation> op_list = new ArrayList<ContentProviderOperation>(); 

     op_list.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) 
       .withValue(RawContacts.ACCOUNT_TYPE, null) 
       .withValue(RawContacts.ACCOUNT_NAME, null) 
       .build()); 

     op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
     .withValueBackReference(Data.RAW_CONTACT_ID, 0) 
     .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
     .withValue(StructuredName.DISPLAY_NAME, "Dislayname") 
     .withValue(StructuredName.PREFIX, "Prefix") 
     .withValue(StructuredName.GIVEN_NAME, "First") 
     .withValue(StructuredName.FAMILY_NAME, "Last") 
     .withValue(StructuredName.MIDDLE_NAME, "Middle") 
     .withValue(StructuredName.SUFFIX, "Suffix") 
     .build()); 

     op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
        .withValue(Data.RAW_CONTACT_ID, 0) 
        .withValue(Data.MIMETYPE, Nickname.CONTENT_ITEM_TYPE) 
        .withValue(Nickname.NAME, "Nickname") 
        .withValue(Nickname.TYPE, Nickname.TYPE_SHORT_NAME) 
        .build()); 

     op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
       .withValueBackReference(Data.RAW_CONTACT_ID, 0)       
       .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) 
       .withValue(Phone.TYPE, Phone.TYPE_WORK) 
       .withValue(Phone.NUMBER, "66666666") 
       .withValue(Phone.LABEL, "") 
       .build()); 

     op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
       .withValue(Data.RAW_CONTACT_ID, 0) 
       .withValue(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE) 
       .withValue(Email.TYPE, Email.TYPE_WORK) 
       .withValue(Email.DATA, "[email protected]") 
       .build()); 

     op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
       .withValue(Data.RAW_CONTACT_ID, 0) 
       .withValue(Data.MIMETYPE, Website.CONTENT_ITEM_TYPE) 
       .withValue(Website.TYPE, Website.TYPE_WORK) 
       .withValue(Website.URL, "www.site.com") 
       .build()); 

     op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
       .withValue(Data.RAW_CONTACT_ID, 0) 
       .withValue(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE) 
       .withValue(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME) 
       .withValue(StructuredPostal.STREET, "TEST STREET") 
       .withValue(StructuredPostal.CITY, "TEST CITY") 
       .withValue(StructuredPostal.REGION, "TEST REGION") 
       .withValue(StructuredPostal.POSTCODE, "00000") 
       .withValue(StructuredPostal.COUNTRY, "TEST COUNTRY") 
       .withValue(StructuredPostal.NEIGHBORHOOD, "TEST NEIGHBORHOOD") 
       .withValue(StructuredPostal.POBOX, "TEST POBOX") 
       .build()); 

     op_list.add(ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(Data.RAW_CONTACT_ID, 0) 
       .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.Organization.COMPANY, "Company") 
       .withValue(ContactsContract.CommonDataKinds.Organization.TITLE, "Job Title") 
       .withValue(ContactsContract.CommonDataKinds.Organization.JOB_DESCRIPTION, "Job description/position") 
       .withValue(ContactsContract.CommonDataKinds.Organization.DEPARTMENT, "Department") 
       .withValue(ContactsContract.CommonDataKinds.Organization.OFFICE_LOCATION, "Office location") 
       .withValue(ContactsContract.CommonDataKinds.Organization.SYMBOL, "Symbol") 
       .withValue(ContactsContract.CommonDataKinds.Organization.PHONETIC_NAME, "Phonetic name") 
       .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK) 
       .build()); 

     op_list.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(Data.RAW_CONTACT_ID, 0) 
        .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Im.DATA, "[email protected]") 
        .withValue(ContactsContract.CommonDataKinds.Im.TYPE, Im.TYPE_WORK) 
        .withValue(ContactsContract.CommonDataKinds.Im.PROTOCOL, Im.PROTOCOL_SKYPE) 
        .build()); 

     op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
        .withValue(Data.RAW_CONTACT_ID, 0) 
        .withValue(Data.MIMETYPE, Nickname.CONTENT_ITEM_TYPE) 
        .withValue(Note.NOTE, "Note") 
        .build()); 

     op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
        .withValue(Data.RAW_CONTACT_ID, 0) 
        .withValue(Data.MIMETYPE, android.provider.ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE) 
        .withValue(android.provider.ContactsContract.CommonDataKinds.Event.START_DATE, "2013-06-06") 
        .withValue(android.provider.ContactsContract.CommonDataKinds.Event.TYPE, android.provider.ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY) 
        .withValue(android.provider.ContactsContract.CommonDataKinds.Event.LABEL, "Birthday") 
        .build()); 

     op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
        .withValue(Data.RAW_CONTACT_ID, 0) 
        .withValue(Data.MIMETYPE, Relation.CONTENT_ITEM_TYPE) 
        .withValue(Relation.NAME, "Relation name") 
        .withValue(Relation.TYPE, Relation.TYPE_BROTHER) 
        .build()); 

     try { 
      context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, op_list); 
     } catch(Exception e) { 
      Log.d("contacts", "saveContact", e); 
     } 
    } 

回答

3

這實際上只是一個小而重要的錯字!您只能使用withValueBackreference()用於那些功能類型 - 您爲其他用戶使用withValue()。難怪,那些不起作用。只需在這裏使用withValueBackReference(),並且所有功能都能按預期工作!

+1

ARGH我不敢相信我錯過了.. doh! 非常感謝你! :) –

+0

不要woory。像這樣的東西一直在發生。而且它也花費我們太多時間找到它:-) –

相關問題