- (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);
});
}

最新文章

  1. JavaScript简单对象的定义方法
  2. #iOS问题记录#动态Html加载本地CSS和JS文件
  3. HQL
  4. mysqli连接数据库常见函数
  5. Swift面向对象基础(上)——Swift中的类和结构体(上)
  6. python中的多线程【转】
  7. Sqlserver 快照
  8. Android开发系列之搭建开发环境
  9. 多线程下的performSelector和NSThread的使用
  10. smarty模板执行原理
  11. Java的Log系统介绍和切换(转)
  12. Spark 倾斜连接
  13. Gentoo/Funtoo USE标记介绍
  14. 51nod--1069 Nim 游戏(博弈论)
  15. k3 Bos开发百问百答
  16. python网络编程(八)
  17. JavaScript:原生模拟$.ajax以及jsonp
  18. vux安装中遇到的坑
  19. c# 静态方法和数据
  20. webpack优化记录

热门文章

  1. 无限级结构SQL查询所有的下级和所有的下级
  2. Flask-论坛开发-2-Jinja2模板
  3. PAT 甲级 1135 Is It A Red-Black Tree
  4. DOM的基本操作
  5. MySql连接空闲8小时自动断开引起的问题
  6. [转载]Linux目录说明
  7. [转帖] 读懂YML文件.. 书买了还没看完...
  8. Angular factory自定义服务
  9. Lodop调整打印项输出顺序 覆盖与层级
  10. Codeforces Round #545 (Div. 1)