IOS 通讯录获取(五)
2016-03-14 15:34
495 查看
参考:http://m.open-open.com/m/code/view/1432302834146
#pragma mark - 获取访问通讯录授权 -(void)address { //这个变量用于记录授权是否成功,即用户是否允许我们访问通讯录 int __block tip=0; //声明一个通讯簿的引用 addressBook =nil; //因为在IOS6.0之后和之前的权限申请方式有所差别,这里做个判断 if ([[UIDevice currentDevice].systemVersion floatValue]>=6.0) { //创建通讯簿的引用 addressBook=ABAddressBookCreateWithOptions(NULL, NULL); dispatch_semaphore_t sema = dispatch_semaphore_create(0); //申请访问权限 ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool greanted, CFErrorRef error) { //greanted为YES是表示用户允许,否则为不允许 if (!greanted) { tip=1; } //授权访问 else { NSMutableArray *ary = [self readAddress]; } //发送一次信号 dispatch_semaphore_signal(sema); }); } else { //IOS6之前 addressBook =ABAddressBookCreate(); if (addressBook) { [self readAddress]; } } } #pragma mark - 联系人姓名、电话 -(NSMutableArray*)readAddress { //获取所有联系人的数组 CFArrayRef allLinkPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); //获取联系人总数 CFIndex number = ABAddressBookGetPersonCount(addressBook); NSMutableArray *addressAry = [NSMutableArray array]; //进行遍历 for (NSInteger i=0; i<number; i++) { NSMutableDictionary *phoneDic = [NSMutableDictionary dictionary]; //获取联系人对象的引用 ABRecordRef people = CFArrayGetValueAtIndex(allLinkPeople, i); //获取当前联系人名字 NSString*firstName=(__bridge NSString *)(ABRecordCopyValue(people, kABPersonFirstNameProperty)); //获取当前联系人名字 NSString*lastName=(__bridge NSString *)(ABRecordCopyValue(people, kABPersonLastNameProperty)); NSString *name = [NSString stringWithFormat:@"%@%@",firstName.length>0?firstName:@"",lastName.length>0?lastName:@""]; //获取当前联系人的电话 数组 NSMutableArray * phoneArr = [[NSMutableArray alloc]init]; ABMultiValueRef phones= ABRecordCopyValue(people, kABPersonPhoneProperty); for (NSInteger j=0; j<ABMultiValueGetCount(phones); j++) { [phoneArr addObject:(__bridge NSString *)(ABMultiValueCopyValueAtIndex(phones, j))]; } if (!IS_NULL(name)) { [phoneDic setObject:name forKey:@"phoneName"]; [phoneDic setObject:phoneArr forKey:@"phoneNum"]; [addressAry addObject:phoneDic]; NSLog(@"联系人的姓名 =%@",name); NSLog(@"联系人的电话phoneArr = %@",phoneArr); } } return addressAry; }
相关文章推荐
- iOS真机测试上下黑边问题
- iOS简单实现虚线的小方法
- iOS 编程的几个基本概念
- iOS开发发觉好多的界面上移了解决方法
- iOS开发发觉好多的界面上移了解决方法
- iOS应用程序生命周期
- iOS 用宏在category里给对象添加属性
- iOS动态添加和获取属性
- 原 IOS CGContextSetLineWidth无法设置1像素线宽?
- iOS沙盒与Bundle详解及文件操作
- Core Data Tutorial for iOS: Getting Started
- 正则表达之----验证数字的正则表达式集
- 详解iOS时间选择框
- iOS中音频
- 集成支付宝钱包支付iOS SDK的方法与经验
- iOS 利用runtime关联对象
- iOS 基础知识大全(OC篇零基础可学习)
- IOS开发 CocoaPods 使用 pod Install 出现 Updating local specs repositories
- iOS开发之简单实现圆形进度条
- iOS 图标、图形尺寸?