使用ContactsContract批量添加联系人
问题描述:
任何人都可以帮助我在地址簿中添加新联系人并使用新的ContactsContract API批量应用他们吗?我找不到适当的教程。使用ContactsContract批量添加联系人
我可以添加一个联系人。但批量更新失败,并添加未知联系人。
目前我正在循环while while循环收集信息。的用户编写,其存储在ArrayList<ContentProviderOperation>
和应用,并
ContentProviderResult[] result = getContentResolver().applyBatch(ContactsContract.AUTHORITY, op_list);
,但只有一个接触与名称更新和其他更新为未知的接触。
请与添加字段,如姓名,昵称,手机,标题,电子邮件,Skype帐号,工作等国家
任何帮助的样本代码帮助吗?谢谢 。
答
这是我的代码工作,根据您的需要为其他值,您可以添加字段:
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();
}
答
以下代码将添加RawContact条目,然后添加名称。要添加任何其他字段,请使用用于添加具有适当值的Name的类似代码。
// Raw Contact
ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
builder.withValue(RawContacts.ACCOUNT_NAME, account.name);
builder.withValue(RawContacts.ACCOUNT_TYPE, account.type);
builder.withValue(RawContacts.SYNC1, username);
operationList.add(builder.build());
// Name
builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, entry.getName().getFullName().getValue());
operationList.add(builder.build());
try {
mContentResolver.applyBatch(ContactsContract.AUTHORITY, operationList);
} catch (Exception e) {
e.printStackTrace();
}
HTH!
与新项目的帮助下解决了这个http://developer.android.com/resources/articles /contacts.html – Pritam 2010-04-22 04:14:19