Android 使用ContactsContract批量添加联系人
是否有人可以帮助我在通讯簿中添加新联系人,并使用新联系人合同API批量应用这些联系人?我找不到关于这方面的适当教程 我可以添加一个联系人。但批量更新失败,添加了未知联系人 目前,我在收集信息时正在进行while循环。要编写的用户数,将其存储在Android 使用ContactsContract批量添加联系人,android,contactscontract,Android,Contactscontract,是否有人可以帮助我在通讯簿中添加新联系人,并使用新联系人合同API批量应用这些联系人?我找不到关于这方面的适当教程 我可以添加一个联系人。但批量更新失败,添加了未知联系人 目前,我在收集信息时正在进行while循环。要编写的用户数,将其存储在ArrayList中,然后应用和 ContentProviderResult[] result = getContentResolver().applyBatch(ContactsContract.AUTHORITY, op_list); 但只有一个联系人
ArrayList
中,然后应用和
ContentProviderResult[] result = getContentResolver().applyBatch(ContactsContract.AUTHORITY, op_list);
但只有一个联系人更新为姓名,另一个更新为未知联系人
请提供一个示例代码,其中添加了姓名、昵称、手机、标题、电子邮件、Skype id、工作国家等字段
有什么帮助吗?谢谢。以下代码将添加联系人条目,然后添加姓名。要添加任何其他字段,请使用用于添加具有正确值的名称的类似代码
// 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();
}
嗯 以下代码将添加RawContact条目,然后添加名称。要添加任何其他字段,请使用用于添加具有正确值的名称的类似代码
// 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();
}
嗯 这是我的代码,可以根据需要为其他值添加字段:
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, "Contact_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().applyBatch(ContactsContract.AUTHORITY, op_list);
} catch (OperationApplicationException exp) {
exp.printStackTrace();
} catch (RemoteException exp) {
exp.printStackTrace();
}
int backRefIndex=0
ArrayList op_list=新建ArrayList();
op_list.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)。withValue(RawContacts.ACCOUNT_类型,null)。withValue(RawContacts.ACCOUNT_名称,null)
.build());
op_list.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT\u URI)。withValueBackReference(ContactsContract.Data.RAW\u CONTACT\u ID,backRefIndex)。withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataTypes.StructuredName.CONTENT\u项目类型)。withValue(ContactsContract.CommonDataTypes.StructuredName.DISPLAY\u名称,“联系人名称”).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());
试一试{
ContentProviderResult[]result=context.getContentResolver().applyBatch(contacts contract.AUTHORITY,op_list);
}捕获(操作应用程序异常扩展){
exp.printStackTrace();
}catch(RemoteException exp){
exp.printStackTrace();
}
这是我的代码,可以根据需要为其他值添加字段:
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, "Contact_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().applyBatch(ContactsContract.AUTHORITY, op_list);
} catch (OperationApplicationException exp) {
exp.printStackTrace();
} catch (RemoteException exp) {
exp.printStackTrace();
}
int backRefIndex=0
ArrayList op_list=新建ArrayList();
op_list.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)。withValue(RawContacts.ACCOUNT_类型,null)。withValue(RawContacts.ACCOUNT_名称,null)
.build());
op_list.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT\u URI)。withValueBackReference(ContactsContract.Data.RAW\u CONTACT\u ID,backRefIndex)。withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataTypes.StructuredName.CONTENT\u ITEM\u TYPE)。withValue(ContactsContract.CommonDataTypes.StructuredName.DISPLAY\u NAME,”联系_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());
试一试{
ContentProviderResult[]result=context.getContentResolver().applyBatch(contacts contract.AUTHORITY,op_list);
}捕获(操作应用程序异常扩展){
exp.printStackTrace();
}catch(RemoteException exp){
exp.printStackTrace();
}
通过新文章的帮助解决了此问题在本例中通过新文章的帮助解决了此问题,account.name、account.type和username来自何处?您可以在使用任何特定帐户时使用帐户名称和类型(即,如果您已同步您的gmail帐户,并希望在其中再添加一个联系人).Sync1选项是帐户的用户名,用于存储本地同步信息。在本例中,account.name、account.type和username来自何处?您可以在使用任何特定帐户时使用帐户名称和类型(即,如果您已同步您的gmail帐户并希望在其中再添加一个联系人).Sync1选项是帐户的用户名,用于存储本地同步信息。