//导入头文件
#import <AddressBook/AddressBook.h>
//获取权限
-(void)adaddress{
//判断是否授权成功
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {
//授权成功后直接返回
return;
}
ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);
//请求用户授权
//第一个参数接收通讯录
//第二个参数是一个block,无论授权成功 还是失败都会调用
ABAddressBookRequestAccessWithCompletion(book, ^(bool granted, CFErrorRef error) {
//granted YES 代表用户授权成功 NO代表用户授权失败
if (granted) {
NSLog(@"授权成功");
}else{
NSLog(@"授权失败");
}
});
}
-(void)buttonClick:(UIButton *)but{
//判断是否授权成功
if (ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusAuthorized) {
//授权失败直接返回
NSLog(@"授权失败");
return;
}
//创建通讯录对象
ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);
//在通讯录中取得所有联系人;
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(book);
CFIndex count = CFArrayGetCount(allPeople);
//打印每一个联系人的额外信息
for (int i = 0; i < count; i++) {
PhoneModel *model = [[PhoneModel alloc] init];
//联系人列表中的每一个人都是一个ABrecorRef
ABRecordRef peopleInform = CFArrayGetValueAtIndex(allPeople, i);
//获取联系人的电话
//从联系人中获取到的电话是所有的电话
ABMultiValueRef phones = ABRecordCopyValue(peopleInform, kABPersonPhoneProperty);
//获取当前联系人总共有多少种电话
CFIndex phoneCount = ABMultiValueGetCount(phones);
for (int i = 0; i < phoneCount; i ++) {
//电话类型
CFStringRef name = ABMultiValueCopyLabelAtIndex(phones, i);
NSString *strName = [NSString stringWithFormat:@"%@",name];
//打印电话类型
NSLog(@"%@",strName);
//用户存取手机号的时候分成好几种 这里只取 一种
if ([strName isEqualToString:@"_$!<Mobile>!$_"]) {
model.Mobile = [NSString stringWithFormat:@"%@",name];
//从所有的电话中 取出指定的电话
CFStringRef value = ABMultiValueCopyValueAtIndex(phones, i);
model.phoneTEL = [NSString stringWithFormat:@"%@",value];
//取出当前联系人的电话信息
//获取联系人的姓名
CFStringRef lastName = ABRecordCopyValue(peopleInform, kABPersonLastNameProperty);
CFStringRef firstName = ABRecordCopyValue(peopleInform, kABPersonFirstNameProperty);
//把姓名拼接好
if (firstName == nil && lastName != nil) {
model.name = [NSString stringWithFormat:@"%@",lastName];
}else if (firstName == nil && lastName != nil){
model.name = [NSString stringWithFormat:@"%@",firstName];
}else if (lastName != nil && firstName != nil){
model.name = [NSString stringWithFormat:@"%@%@",lastName,firstName];
}else{
model.name = @"";
}
[phoneArray addObject:model];
}
}
}
[phoneTB reloadData];
}