我正在滚动我自己的PeoplePicker,使用以下代码获取所有联系人:
ABAddressBookRef ab = ABAddressBookCreate(); ABRecordRef source = ABAddressBookCopyDefaultSource(ab); NSArray *allContacts = (NSArray *) ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(ab, source, ABPersonGetSortOrdering());
它在开发过程中运行良好,但现在我们处于测试阶段,并且用户抱怨说当他们在我的应用程序中选择联系人时,他们可以选择的列表是他们所有联系人中的一小部分。他们的电话。
我们认为它实际上只是展示了他们的一个群体。
过了一会儿,我意识到你可以在设置>中设置默认组。邮件,通讯录,日历>联系人>默认组
如果用户选择了特定的组,那么该组就会显示在我的应用中。
我认为这是因为我正在使用ABAddressBookCopyDefaultSource
来获取所有联系人。
如何在不考虑默认来源的情况下抓取所有用户的联系人?
谢谢!
答案 0 :(得分:3)
试试这个,
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
for( int i=0;i< nPeople;i++)
{
ABRecordRef ref = CFArrayGetValueAtIndex(allPeople, i);
CFStringRef firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
.....
and so on
}