4

iPhoneのアドレス帳で連絡先のメールアドレスを取得するにはどうすればよいですか? 名前、番号、電子メールなどのすべての情報を含む連絡先をアドレス帳からインポートするアプリがあります。名前、番号は正常に機能しています。住所も取得したいです。コード機能について教えてください。

4

1 に答える 1

5

フレームワークAddressBook.frameworkを追加#import <AddressBook/AddressBook.h>し、.m ファイルに追加する必要があります。

アドレス帳から連絡先の電子メール アドレスを取得するには::

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;
}
于 2012-07-14T04:28:10.890 に答える