2

我正在构建一个从在线资源同步联系人的应用程序。到目前为止一切正常......当手机有一个通讯录时:

ABAddressBookRef addressBook = ABAddressBookCreate();
ABRecordRef group1 = ABGroupCreate();
ABRecordSetValue(group1,kABGroupNameProperty,@"Group1",nil);
ABAddressBookAddRecord(addressBook,group1,nil);
ABAddressBookSave(addressBook,nil);

ABRecordRef person = ABPersonCreate();
// Edit person values...

ABGroupAddMember(group1,person,nil);
ABAddressBookAddRecord(addressBook,person,nil);
ABAddressBookSave(addressBook,nil);
CFRelease(person);
CFRelease(addressBook);

但是,当电话已经有多个通讯录时,就会出现问题。我正在测试一部手机,它有一个用于所有联系人的通讯录,一个用于 Gmail 等。当我以上述方式添加联系人时,它会将其添加到 Gmail 通讯录中,并在此过程中去除“Group1”标识符从接触。有没有办法可以将 ABAddressBookRef 更改为指向手机中的特定地址簿?

4

2 回答 2

0

Mike,您可能想看看这篇文章: 在 iOS 4+ 中从 ABAddressBook 获取特定 ABSource

尽管我相信 Alex 是正确的,只有一个地址簿,但该地址簿可能包含多个来源 (ABSource)。而且,在 iOS 4+ 中,可以专门识别和操纵特定来源。

于 2011-01-25T09:02:37.857 回答
0

根据参考ABAddressBookCreate总是返回从系统的通讯簿数据库填充的通讯簿对象。这意味着只有一个地址簿,即使您有多个ABAddressBook用于与之交互的实例。

于 2010-11-17T00:14:09.213 回答