【发布时间】:2012-02-23 18:51:36
【问题描述】:
我看到this问答,但添加电话信息(甚至电子邮件)仍然无法正确汇总联系信息(当我检查人脉应用时,我可以看到同名下的多个条目) .
这是我用来测试它的代码。
//get the account
Account acct = null;
Account[] accounts = AccountManager.get(getContext()).getAccounts();
for (Account acc : accounts){
acct = acc;
}//assuming there's only one account in there (in my case I know there is)
//loop a few times, creating a new contact each time. In theory, if they have the same name they should aggregate
for(int i=0; i<3; i++){
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, acct.type)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, acct.name)
.withValue(ContactsContract.RawContacts.AGGREGATION_MODE, ContactsContract.RawContacts.AGGREGATION_MODE_DEFAULT)
.build());
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, "ContactName")
.build());
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, "1234567890")
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 1)
.build());
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Email.DATA, "email@address.com")
.withValue(ContactsContract.CommonDataKinds.Email.TYPE, 1)
.build());
try{
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}
catch (Exception e) {
Log.e("Contacts", "Something went wrong during creation! " + e);
e.printStackTrace();
}
}
【问题讨论】:
-
你有没有发现如何链接生成的联系人,即使他们的名字不同?
-
@androiddeveloper 抱歉,我停止了这方面的工作,从未找到好的答案
-
好的,我想我用你的样本让它工作了,所以我发布了一个答案。问题是它让我想到了更多我不知道的问题。