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 里面包含手机 姓名
#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 里面包含手机 姓名
相关文章推荐
- 在IOS输入框中 键盘上显示“搜索”
- iOS 打印类型
- 游戏应用快速审核上架
- iOS---分段控件的点击事件
- iOS 图片取色器
- [转]iOS:批量导入图片和视频到模拟器的相册
- iOS NSDecimalNumber详解
- iOS----轻松掌握AFN
- 网易新闻iOS版使用的18个开源组件
- iOS判断一个字符串中是否都是数字
- iOS7 edgesForExtendedLayout
- IOS 所有设备的屏幕分辨率(十)
- iOS NSURLSession 学习(1)
- IOS开发 获取手机里的全部图片
- ios 利用size classes 使 iPad 水平和垂直方向布局不同
- IOS Quartz 2D
- [iOS]添加 All Exceptions 断点后, 每次运行都会在 main.m 中断的一种解决方法
- vmstat,iostat,sar命令详解
- ios常用操作命令
- iOS开发可变参数va_list、va_start、va_end