iOS通過app讀取通訊錄資訊,讀取通訊錄資訊時需要載入AddressBookUI 和AddressBook兩個包,並且引入標頭檔
#import
#import
具體實現如下:
-(void)readAllPeoples{ //定義通訊錄名字為addressbook ABAddressBookRef tmpAddressBook = nil; //根據系統版本不同,調用不同方法擷取通訊錄 if ([[UIDevice currentDevice].systemVersion floatValue]>=6.0) { tmpAddressBook=ABAddressBookCreateWithOptions(NULL, NULL); dispatch_semaphore_t sema=dispatch_semaphore_create(0); ABAddressBookRequestAccessWithCompletion(tmpAddressBook, ^(bool greanted, CFErrorRef error){ dispatch_semaphore_signal(sema); }); dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER); dispatch_release(sema); } else { tmpAddressBook =ABAddressBookCreate(); } //取得通訊錄失敗 if (tmpAddressBook==nil) { return ; }; //將通訊錄中的資訊用數組方式讀出 NSArray* tmpPeoples = (NSArray*)ABAddressBookCopyArrayOfAllPeople(tmpAddressBook); //遍曆通訊錄中的連絡人 for(id tmpPerson in tmpPeoples){ //擷取的連絡人單一屬性:First name NSString* tmpFirstName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonFirstNameProperty); NSLog(@"First name:%@", tmpFirstName); [tmpFirstName release]; //擷取的連絡人單一屬性:Last name NSString* tmpLastName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonLastNameProperty); NSLog(@"Last name:%@", tmpLastName); [tmpLastName release]; //擷取的連絡人單一屬性:Nickname NSString* tmpNickname = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonNicknameProperty); NSLog(@"Nickname:%@", tmpNickname); [tmpNickname release]; //擷取的連絡人單一屬性:Company name NSString* tmpCompanyname = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonOrganizationProperty); NSLog(@"Company name:%@", tmpCompanyname); [tmpCompanyname release]; //擷取的連絡人單一屬性:Job Title NSString* tmpJobTitle= (NSString*)ABRecordCopyValue(tmpPerson, kABPersonJobTitleProperty); NSLog(@"Job Title:%@", tmpJobTitle); [tmpJobTitle release]; //擷取的連絡人單一屬性:Department name NSString* tmpDepartmentName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonDepartmentProperty); NSLog(@"Department name:%@", tmpDepartmentName); [tmpDepartmentName release]; //擷取的連絡人單一屬性:Email(s) ABMultiValueRef tmpEmails = ABRecordCopyValue(tmpPerson, kABPersonEmailProperty); for(NSInteger j = 0; ABMultiValueGetCount(tmpEmails); j++) { NSString* tmpEmailIndex = (NSString*)ABMultiValueCopyValueAtIndex(tmpEmails, j); NSLog(@"Emails%d:%@", j, tmpEmailIndex); [tmpEmailIndex release]; } CFRelease(tmpEmails); //擷取的連絡人單一屬性:Birthday NSDate* tmpBirthday = (NSDate*)ABRecordCopyValue(tmpPerson, kABPersonBirthdayProperty); NSLog(@"Birthday:%@", tmpBirthday); [tmpBirthday release]; //擷取的連絡人單一屬性:Note NSString* tmpNote = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonNoteProperty); NSLog(@"Note:%@", tmpNote); [tmpNote release]; //擷取的連絡人單一屬性:Generic phone number ABMultiValueRef tmpPhones = ABRecordCopyValue(tmpPerson, kABPersonPhoneProperty); for(NSInteger j = 0; j < ABMultiValueGetCount(tmpPhones); j++) { NSString* tmpPhoneIndex = (NSString*)ABMultiValueCopyValueAtIndex(tmpPhones, j); NSLog(@"tmpPhoneIndex%d:%@", j, tmpPhoneIndex); [tmpPhoneIndex release]; } CFRelease(tmpPhones); } //釋放記憶體 [tmpPeoples release]; CFRelease(tmpAddressBook);}