iOS提取本地通讯录数据
来源:互联网 发布:淘宝店可以转天猫吗 编辑:程序博客网 时间:2024/05/21 22:30
在开发中偶尔会涉及到需要提取本地通讯录数据的需要,为此整理以下实例:(示例工程下载请点击)
iOS中若需获取本地通讯录数据需在工程中导入以下库:AddressBook.framework
获取本地通讯录数据示例程序如下:
#pragma mark - 获取手机所有联系人- (void)obtainPhoneAllContact{ //这个变量用于记录授权是否成功,即用户是否允许我们访问通讯录 int __block tip=0; //声明一个通讯簿的引用 ABAddressBookRef addBook =nil; //因为在IOS6.0之后和之前的权限申请方式有所差别,这里做个判断 if ([[UIDevice currentDevice].systemVersion floatValue]>=6.0) { //创建通讯簿的引用 addBook=ABAddressBookCreateWithOptions(NULL, NULL); //创建一个出事信号量为0的信号 dispatch_semaphore_t sema=dispatch_semaphore_create(0); //申请访问权限 ABAddressBookRequestAccessWithCompletion(addBook, ^( bool greanted, CFErrorRef error) { //greanted为YES是表示用户允许,否则为不允许 if (!greanted) { tip=1; } //发送一次信号 dispatch_semaphore_signal(sema); }); //等待信号触发 dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER); } else { //IOS6之前 addBook =ABAddressBookCreate(); } if (tip) { //做一个友好的提示 UIAlertView * alart = [[UIAlertView alloc]initWithTitle:@ "温馨提示" message:@ "请您设置允许APP访问您的通讯录\nSettings>General>Privacy" delegate:self cancelButtonTitle:@ "确定" otherButtonTitles:nil, nil]; [alart show]; return ; } //获取所有联系人的数组 CFArrayRef allLinkPeople = ABAddressBookCopyArrayOfAllPeople(addBook); //获取联系人总数 CFIndex number = ABAddressBookGetPersonCount(addBook); //进行遍历 for (NSInteger i=0; i<number; i++) { //获取联系人对象的引用 ABRecordRef people = CFArrayGetValueAtIndex(allLinkPeople, i); //获取当前联系人名字 NSString*firstName=(__bridge NSString *)(ABRecordCopyValue(people, kABPersonFirstNameProperty)); //获取当前联系人姓氏 NSString*lastName=(__bridge NSString *)(ABRecordCopyValue(people, kABPersonLastNameProperty)); //获取当前联系人的公司 NSString*organization=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonOrganizationProperty)); //获取当前联系人的职位 NSString*job=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonJobTitleProperty)); //获取当前联系人的部门 NSString*department=(__bridge NSString*)(ABRecordCopyValue(people, kABPersonDepartmentProperty)); //获取当前联系人的电话 数组 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))]; } //获取当前联系人头像图片 NSData*userImage=(__bridge NSData*)(ABPersonCopyImageData(people)); if (lastName == NULL) { NSLog(@"姓名:%@",firstName); } else if (firstName == NULL) { NSLog(@"姓名:%@",lastName); } else if(firstName != NULL && lastName != NULL){ NSLog(@"姓名:%@%@",lastName,firstName); } NSString *str = phoneArr; NSLog(@"联系电话:%@",phoneArr); if (userImage == NULL) { NSLog(@"头像为空"); } }}
如有不明白的地方欢迎咨询:
QQ:294491256
Telephone:13390517636
0 0
- iOS提取本地通讯录数据
- iOS开发之提取本地通讯录数据
- iOS调用本地通讯录
- iOS开发获取本地通讯录
- hive提取数据到本地
- ios中调用本地通讯录和相册
- iOS 通讯录添加了本地打电话功能
- ios中访问通讯录数据
- iOS 获取通讯录的数据
- ios本地数据存储
- iOS本地数据存取
- ios本地数据存取
- iOS本地数据存取
- IOS本地数据存取
- iOS 数据本地存取
- iOS本地数据存取
- ios本地存储数据
- iOS本地数据搜索
- c++作业2---项目二到四
- GPU硬件加速
- Python debug —— 逻辑错误(三)
- Perfect Cubes[打表]
- JVM(三)--JVM内存管理和JVM垃圾回收
- iOS提取本地通讯录数据
- 深入理解 Python
- google guava 测试
- Android手机 Fildder真机抓包
- java 类加载器和类加载方式
- Android加载一张3.4MB的图片,不出现OOM
- 一步步学会Thrift服务搭建和调用
- Andfix热修复框架原理及源码解析-下篇
- hdu1026(bfs求起点到终点最短距离)