您的位置:首页 > 移动开发 > IOS开发

IOS开发 获取手机通讯录

2015-12-11 14:29 323 查看
//导入头文件

#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];

}

直接调用方法就好 mode是我建的Model 里面包含手机 姓名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: