2015-03-08 99 views
0

可能的答案是微不足道的,但我無法弄清楚。我正在嘗試在下面添加一段代碼,但聯繫人列表中只有「contact_0」。你知道這段代碼有什麼問題嗎?添加多個聯繫人到Android

public void myMethod(){ 

    for (int i = 0; i < 5; i++) { 
     ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
     ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.RawContacts.CONTENT_URI) 
       .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, 
         null) 
       .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, 
         null) 
       .withValue(ContactsContract.RawContacts.AGGREGATION_MODE, 
         ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED).build()); 

     // ------------------------------------------------------ Name 

     ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(
         ContactsContract.Data.RAW_CONTACT_ID, i) 
       .withValue(
         ContactsContract.Data.MIMETYPE, 
         ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
       .withValue(
         ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, 
         "contact_"+i).build()); 

     // ------------------------------------------------------ Work 
     // Number 

     ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(
         ContactsContract.Data.RAW_CONTACT_ID, i) 
       .withValue(
         ContactsContract.Data.MIMETYPE, 
         ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
       .withValue(
         ContactsContract.CommonDataKinds.Phone.NUMBER, 
         "01 62384") 
       .withValue(
         ContactsContract.CommonDataKinds.Phone.TYPE, 
         ContactsContract.CommonDataKinds.Phone.TYPE_WORK) 
       .build()); 



     try { 
      getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

任何想法傢伙?

預先感謝任何幫助

回答

0
public void myMethod(){ 

    for (int i = 0; i < 5; i++) { 
     ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
     ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.RawContacts.CONTENT_URI) 
       .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, 
         null) 
       .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, 
         null) 
       .withValue(ContactsContract.RawContacts.AGGREGATION_MODE, 
         ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED).build()); 

     // ------------------------------------------------------ Name 

     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.DISPLAY_NAME, 
         "contact_"+i).build()); 

     // ------------------------------------------------------ Work 
     // Number 

     ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(
         ContactsContract.Data.RAW_CONTACT_ID, 0) 
       .withValue(
         ContactsContract.Data.MIMETYPE, 
         ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
       .withValue(
         ContactsContract.CommonDataKinds.Phone.NUMBER, 
         "01 62384") 
       .withValue(
         ContactsContract.CommonDataKinds.Phone.TYPE, 
         ContactsContract.CommonDataKinds.Phone.TYPE_WORK) 
       .build()); 



     try { 
      getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

請在每次插入操作使用RAW_CONTACT_ID 0。這對我有用。