在批量使用ContactsContract添加联系人批量、联系人、ContactsContract

2023-09-07 13:18:09 作者:冲动鬼

任何人都可以请帮我在地址簿中添加新的联系人,通过使用新的API ContactsContract批量应用它们?我不能在这找到合适的教程。

Can anyone please help me on adding new contacts in address book and apply them in batch by using new ContactsContract API? I could not find a proper tutorial on this.

我可以添加一个联系人。但批更新失败,​​并添加未知的联系人。

I am able to add a single contact. But batch update fails with Unknown contacts being added.

目前,我通过循环while循环,同时收集信息。用户写的,它存储在的ArrayList< ContentProviderOperation> 和应用以及

Currently I am looping through while loop while collecting info. of users to write, store it in the ArrayList<ContentProviderOperation> and applying and

ContentProviderResult[] result = getContentResolver().applyBatch(ContactsContract.AUTHORITY, op_list);

但只有一个联系人与名称更新和其他更新未知联系人。

But only one contact is updated with name and other are updated as unknown contacts.

请与样品code这将增加,如姓名,昵称,移动,标题,电子邮件,Skype帐号,工作等国家的领域有所帮助。

Please help with a sample code which adds the fields like name,nickname,mobile,title,email,Skype id,work-country etc.

任何帮助吗?谢谢你。

推荐答案

这是我的code的工作,您可以添加您需要的其他值的字段:

This is my code that worked, you can add the fields as you require for other values:

int backRefIndex = 0

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(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, backRefIndex).withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "My Name").build());

op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI).withValueBackReference(Data.RAW_CONTACT_ID,backRefIndex).withValue(Phone.MIMETYPE,Phone.CONTENT_ITEM_TYPE).withValue(Phone.NUMBER,"1234567890").withValue(Phone.TYPE,Phone.TYPE_MOBILE).withValue(Phone.TYPE, Phone.TYPE_WORK).build());

try {
    ContentProviderResult[] result = context.getContentResolver().applyBatchContactsContract.AUTHORITY, op_list);
} catch (OperationApplicationException exp) {
    exp.printStackTrace();
} catch (RemoteException exp) {
    exp.printStackTrace();
}
 
精彩推荐
图片推荐