IOS 获取系统通信录中的联系人信息

- (IBAction)getAllContactFromSystem {
ABAddressBookRef ab = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(ab, ^(bool granted, CFErrorRef error) {

//取得通信录访问受权
ABAuthorizationStatus authorization= ABAddressBookGetAuthorizationStatus();
if (authorization!=kABAuthorizationStatusAuthorized) {
NSLog(@"还没有得到通信录访问受权!");
return ;
}

//取得通信录中全部人员记录
CFArrayRef allPeople= ABAddressBookCopyArrayOfAllPeople(ab);
for (int i=0; i<CFArrayGetCount(allPeople); ++i) {
ABRecordRef recordRef = CFArrayGetValueAtIndex(allPeople, i);
//获取用户名
NSString *firstName = (__bridge NSString *) ABRecordCopyValue(recordRef, kABPersonFirstNameProperty);
NSString *lastName = (__bridge NSString *)ABRecordCopyValue(recordRef, kABPersonLastNameProperty);
NSString *personName = [NSString stringWithFormat:@"%@%@",lastName,firstName];
//获取手机号
NSMutableArray *phoneNumbers = [NSMutableArray new];
ABMultiValueRef phoneNumbersRef = ABRecordCopyValue(recordRef, kABPersonPhoneProperty);
for(int j=0; j<ABMultiValueGetCount(phoneNumbersRef); ++j){
NSString* phoneNumber = (__bridge NSString *)(ABMultiValueCopyValueAtIndex(phoneNumbersRef, j));
phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@"-" withString:@""];
if (phoneNumber.length > 0) {
[phoneNumbers addObject:phoneNumber];
}
}
}

//释放资源
CFRelease(allPeople);
});
}orm

相关文章
相关标签/搜索