在批量使用ContactsContract添加联系人 [英] Adding contacts using ContactsContract in batch
问题描述
任何人都可以请帮我在地址簿中添加新的联系人,通过使用新的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();
}
这篇关于在批量使用ContactsContract添加联系人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!