2012-07-14 207 views
4

如何获取iPhone地址簿中联系人的电子邮件地址? 我有一个应用程序,我想在其中导入地址簿中的任何联系人以及他的所有信息,如姓名,电话号码和电子邮件。 姓名,号码工作正常我也想取地址。 请帮忙使用代码功能。Xcode从地址簿获取联系人电子邮件地址

回答

5

您应该添加框架工作AddressBook.framework并在.m文件中添加#import <AddressBook/AddressBook.h>

从地址簿中获取联系人的电子邮件地址::

ABAddressBookRef addressBook = ABAddressBookCreate(); 
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook); 
NSMutableArray *allEmails = [[NSMutableArray alloc] initWithCapacity:CFArrayGetCount(people)]; 
for (CFIndex i = 0; i < CFArrayGetCount(people); i++) { 
    ABRecordRef person = CFArrayGetValueAtIndex(people, i); 
    ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty); 
    for (CFIndex j=0; j < ABMultiValueGetCount(emails); j++) { 
     NSString* email = (NSString*)ABMultiValueCopyValueAtIndex(emails, j); 
     [allEmails addObject:email]; 
     [email release]; 
    } 
    CFRelease(emails); 
} 
NSLog(@"All Mails:%@",allEmails); 
CFRelease(addressBook); 
CFRelease(people); 

我认为这将是对你有所帮助。

编辑::

您应该使用委托- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person方法。当您选择联系人列表中的任何人时,此方法将会调用。试试这个...

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person 
{ 

ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty); 
NSString *emailId = (NSString *)ABMultiValueCopyValueAtIndex(emails, 0);//0 for "Home Email" and 1 for "Work Email". 
NSLog(@"Email:: %@",emailId); 

    return YES; 
} 
+0

感谢reply.But我想获取特定的选定联系人 – user1500683 2012-07-14 04:31:16

+0

此代码获取地址簿中的所有联系人的所有电子邮件地址的电子邮件,但是我想获取的不仅仅是电子邮件地址一次选择联系人。请帮助。谢谢 – user1500683 2012-07-14 04:41:17

+0

我已编辑。核实。 – 2012-07-14 05:07:22

相关问题