使用iOS6 Addressbook的Sample,使用前別忘了先
Reference: here: http://stackoverflow.com/a/12648938/480415
"#import <AddressBook/Addressbook.h>"
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-(void) grantAddressBook{ | |
// Request authorization to Address Book | |
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL); | |
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { | |
ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) { | |
// First time access has been granted, add the contact | |
[self getContentList:addressBookRef]; | |
}); | |
} | |
else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) { | |
// The user has previously given access, add the contact | |
[self getContentList:addressBookRef]; | |
} | |
else { | |
// The user has previously denied access | |
// Send an alert telling user to change privacy setting in settings app | |
} | |
} | |
-(void) getContentList:(ABAddressBookRef)addressBookRef{ | |
CFArrayRef arrayOfEntries = ABAddressBookCopyArrayOfAllPeople(addressBookRef); | |
CFIndex countOfEntries = CFArrayGetCount(arrayOfEntries); | |
for (int i=0; i!=countOfEntries; i++) { | |
NSLog(@"------------------------ [%d] ------------------------", i); | |
ABRecordRef currentRecord = CFArrayGetValueAtIndex(arrayOfEntries, i); | |
//iamge | |
NSData *imageData = (__bridge_transfer NSData*)ABPersonCopyImageData(currentRecord); | |
UIImage *image = [[UIImage alloc] initWithData:imageData]; | |
NSLog(@"image = %@", image); | |
//last | |
NSString *lastName = (__bridge_transfer NSString *)ABRecordCopyValue(currentRecord, kABPersonLastNameProperty); | |
if (lastName) | |
NSLog(@"lastName:%@", lastName); | |
//firstname | |
NSString *firstName = (__bridge_transfer NSString *)ABRecordCopyValue(currentRecord, kABPersonFirstNameProperty); | |
if (firstName) | |
NSLog(@"firstName:%@", firstName); | |
//nickname | |
NSString *nickName = (__bridge_transfer NSString *)ABRecordCopyValue(currentRecord, kABPersonNicknameProperty); | |
if (nickName) | |
NSLog(@"nickName:%@", nickName); | |
//middlename | |
NSString *middlename = (__bridge_transfer NSString*)ABRecordCopyValue(currentRecord, kABPersonMiddleNameProperty); | |
if(middlename) | |
NSLog(@"middlename:%@", nickName); | |
//prefix | |
NSString *prefix = (__bridge_transfer NSString*)ABRecordCopyValue(currentRecord, kABPersonPrefixProperty); | |
if(prefix) | |
NSLog(@"prefix:%@", prefix); | |
//suffix | |
NSString *suffix = (__bridge_transfer NSString*)ABRecordCopyValue(currentRecord, kABPersonSuffixProperty); | |
if(suffix) | |
NSLog(@"suffix:%@", suffix); | |
//firstname phonetic | |
NSString *firstnamePhonetic = (__bridge_transfer NSString*)ABRecordCopyValue(currentRecord, kABPersonFirstNamePhoneticProperty); | |
if(firstnamePhonetic != nil) | |
NSLog(@"firstnamePhonetic : %@", firstnamePhonetic); | |
//lastname phonetic | |
NSString *lastnamePhonetic = (__bridge_transfer NSString*)ABRecordCopyValue(currentRecord, kABPersonLastNamePhoneticProperty); | |
if(lastnamePhonetic != nil) | |
NSLog(@"lastnamePhonetic : %@", lastnamePhonetic); | |
//middlename phonetic | |
NSString *middlenamePhonetic = (__bridge_transfer NSString*)ABRecordCopyValue(currentRecord, kABPersonMiddleNamePhoneticProperty); | |
if(middlenamePhonetic != nil) | |
NSLog(@"middlenamePhonetic : %@", middlenamePhonetic); | |
//jobtitle | |
NSString *jobtitle = (__bridge_transfer NSString*)ABRecordCopyValue(currentRecord, kABPersonJobTitleProperty); | |
if (jobtitle) | |
NSLog(@"jobtitle : %@", jobtitle); | |
//Organization | |
NSString *organization = (__bridge_transfer NSString*)ABRecordCopyValue(currentRecord, kABPersonOrganizationProperty); | |
if(organization) | |
NSLog(@"organization : %@", organization); | |
//department | |
NSString *department = (__bridge_transfer NSString*)ABRecordCopyValue(currentRecord, kABPersonDepartmentProperty); | |
if(department) | |
NSLog(@"organization : %@", organization); | |
//birthday | |
NSDate *birthday = (__bridge_transfer NSDate*)ABRecordCopyValue(currentRecord, kABPersonBirthdayProperty); | |
if(birthday) | |
NSLog(@"birthday : %@", birthday); | |
//note | |
NSString *note = (__bridge_transfer NSString*)ABRecordCopyValue(currentRecord, kABPersonNoteProperty); | |
if(note) | |
NSLog(@"note : %@", note); | |
//create at | |
NSString *firstknow = (__bridge_transfer NSString*)ABRecordCopyValue(currentRecord, kABPersonCreationDateProperty); | |
if(firstknow) | |
NSLog(@"firstknow : %@", firstknow); | |
//update at | |
NSString *lastknow = (__bridge_transfer NSString*)ABRecordCopyValue(currentRecord, kABPersonModificationDateProperty); | |
if(lastknow) | |
NSLog(@"lastknow : %@", lastknow); | |
//Phone | |
ABMultiValueRef phone = ABRecordCopyValue(currentRecord, kABPersonPhoneProperty); | |
for(CFIndex x=0; x!=ABMultiValueGetCount(phone); x++) { | |
NSString *phoneLabel = (__bridge_transfer NSString *)ABMultiValueCopyLabelAtIndex(phone, x); | |
if ([phoneLabel isEqualToString:(__bridge_transfer NSString *)kABPersonPhoneMobileLabel]) { | |
NSLog(@"Cell phone:%@", (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(phone, x)); | |
} | |
if ([phoneLabel isEqualToString:(__bridge_transfer NSString *)kABPersonPhoneIPhoneLabel]) { | |
NSLog(@"iPhone:%@", (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(phone, x)); | |
} | |
if ([phoneLabel isEqualToString:(__bridge_transfer NSString *)kABPersonPhoneMainLabel]) { | |
NSLog(@"Main phone:%@", (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(phone, x)); | |
} | |
if ([phoneLabel isEqualToString:(__bridge_transfer NSString *)kABPersonPhoneHomeFAXLabel]) { | |
NSLog(@"Home Fax:%@", (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(phone, x)); | |
} | |
if ([phoneLabel isEqualToString:(__bridge_transfer NSString *)kABPersonPhoneWorkFAXLabel]) { | |
NSLog(@"Work Fax:%@", (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(phone, x)); | |
} | |
if ([phoneLabel isEqualToString:(__bridge_transfer NSString *)kABPersonPhoneOtherFAXLabel]) { | |
NSLog(@"Other Fax:%@", (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(phone, x)); | |
} | |
if ([phoneLabel isEqualToString:(__bridge_transfer NSString *)kABPersonPhonePagerLabel]) { | |
NSLog(@"Pager:%@", (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(phone, x)); | |
} | |
} | |
for (int k = 0; k<ABMultiValueGetCount(phone); k++) | |
{ | |
//phone label | |
NSString * personPhoneLabel = (__bridge_transfer NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phone, k)); | |
//phone number | |
NSString * personPhone = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phone, k); | |
NSLog(@"%@:%@", personPhoneLabel, personPhone); | |
} | |
ABMultiValueRef mail = ABRecordCopyValue(currentRecord, kABPersonEmailProperty); | |
for(CFIndex x=0; x!=ABMultiValueGetCount(mail); x++) { | |
NSLog(@"E-Mail:%@", (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(mail, x)); | |
} | |
//Address | |
ABMultiValueRef address = ABRecordCopyValue(currentRecord, kABPersonAddressProperty); | |
for(CFIndex x=0; x!=ABMultiValueGetCount(address); x++) { | |
NSString* addressLabel = (__bridge_transfer NSString *)ABMultiValueCopyLabelAtIndex(address, x); | |
BOOL home = [addressLabel isEqualToString:(__bridge_transfer NSString *)kABHomeLabel]; | |
BOOL work = [addressLabel isEqualToString:(__bridge_transfer NSString *)kABWorkLabel]; | |
BOOL other = [addressLabel isEqualToString:(__bridge_transfer NSString *)kABOtherLabel]; | |
NSLog(@"%d || %d || %d", home, work, other); | |
NSDictionary* personAddress =(__bridge_transfer NSDictionary *)ABMultiValueCopyValueAtIndex(address, x); | |
NSLog(@"Country:%@", [personAddress valueForKey:(__bridge_transfer NSString *)kABPersonAddressCountryKey]); | |
NSLog(@"Zipcode:%@", [personAddress valueForKey:(__bridge_transfer NSString *)kABPersonAddressZIPKey]); | |
NSLog(@"City:%@", [personAddress valueForKey:(__bridge_transfer NSString *)kABPersonAddressCityKey]); | |
NSLog(@"State:%@", [personAddress valueForKey:(__bridge_transfer NSString *)kABPersonAddressStateKey]); | |
NSLog(@"Street:%@", [personAddress valueForKey:(__bridge_transfer NSString *)kABPersonAddressStreetKey]); | |
NSLog(@"Country code:%@", [personAddress valueForKey:(__bridge_transfer NSString *)kABPersonAddressCountryCodeKey]); | |
} | |
//url | |
ABMultiValueRef url = ABRecordCopyValue(currentRecord, kABPersonURLProperty); | |
for (int m = 0; m < ABMultiValueGetCount(url); m++) | |
{ | |
//urlLabel | |
NSString * urlLabel = (__bridge_transfer NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(url, m)); | |
//url conent | |
NSString * urlContent = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(url,m); | |
NSLog(@"%@ : %@", urlLabel, urlContent); | |
} | |
//IM | |
ABMultiValueRef instantMessage = ABRecordCopyValue(currentRecord, kABPersonInstantMessageProperty); | |
for (int l = 1; l < ABMultiValueGetCount(instantMessage); l++) | |
{ | |
//IM Label | |
NSString* instantMessageLabel = (__bridge_transfer NSString*)ABMultiValueCopyLabelAtIndex(instantMessage, l); | |
NSLog(@"instantMessageLabel : %@", instantMessageLabel); | |
NSDictionary* instantMessageContent =(__bridge_transfer NSDictionary*) ABMultiValueCopyValueAtIndex(instantMessage, l); | |
NSString* username = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageUsernameKey]; | |
if(username != nil) | |
NSLog(@"username : %@", username); | |
NSString* service = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageServiceKey]; | |
if(service != nil) | |
NSLog(@"service : %@", service); | |
} | |
//date | |
ABMultiValueRef dates = ABRecordCopyValue(currentRecord, kABPersonDateProperty); | |
int datescount = ABMultiValueGetCount(dates); | |
for (int y = 0; y < datescount; y++) | |
{ | |
//dates Label | |
NSString* datesLabel = (__bridge_transfer NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(dates, y)); | |
//dates | |
NSString* datesContent = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(dates, y); | |
NSLog(@"%@ : %@", datesLabel, datesContent); | |
} | |
//kind | |
CFNumberRef recordType = ABRecordCopyValue(currentRecord, kABPersonKindProperty); | |
if (recordType == kABPersonKindOrganization) { | |
// it's a company | |
NSLog(@"it's a company\n"); | |
} else { | |
// it's a person, resource, or room | |
NSLog(@"it's a person, resource, or room\n"); | |
} | |
} | |
NSLog(@"Total:%ld", countOfEntries); | |
CFRelease(arrayOfEntries); | |
} |
Reference: here: http://stackoverflow.com/a/12648938/480415
沒有留言:
張貼留言