iOS 获取通讯录里边的电话号码AddressBook
1 首先导入库 <AddressBook/AddressBook.h>
2 然后在导入#import <AddressBook/AddressBook.h>文件
3 声明 @property (nonatomic,assign) ABAddressBookRef addressBook;//电话簿
并进行初始化 self.addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
4 然后进行获取通讯录的操作
ABAddressBookRequestAccessWithCompletion(self.addressBook, ^(bool granted, CFErrorRef error) {
if(!granted)
{
NSLog(@"未获得访问权限");
}
//权限状态
ABAuthorizationStatus status = ABAddressBookGetAuthorizationStatus();
if(status!=kABAuthorizationStatusAuthorized)
{
NSLog(@"未获得通讯录权限");
}
//取得记录
CFArrayRef allPeopleCF = ABAddressBookCopyArrayOfAllPeople(self.addressBook);
NSMutableArray *allPeople = (__bridge NSMutableArray *)(allPeopleCF);
//过滤没用的号码
for (int i = ; i<allPeople.count; i++) {
//获得记录
ABRecordRef recordRef = (__bridge ABRecordRef)(allPeople[i]);
//获得姓
NSString *firstName = (__bridge NSString *)(ABRecordCopyValue(recordRef, kABPersonFirstNameProperty));
//获得名
NSString *lastName = (__bridge NSString *)(ABRecordCopyValue(recordRef, kABPersonLastNameProperty));
//获得电话号码
ABMultiValueRef phoneNumbersRef = ABRecordCopyValue(recordRef, kABPersonPhoneProperty);
//获得电话号码的长度
long count = ABMultiValueGetCount(phoneNumbersRef);
//定义一个字符串用来接收电话号码
NSString *numStr = @"";
if (count>) {
//将ABMultiValueRef转换成nsstring类型的
numStr = (__bridge NSString *)(ABMultiValueCopyValueAtIndex(phoneNumbersRef, ));
//去掉86 - 还有空格
numStr = [numStr stringByReplacingOccurrencesOfString:@"+86" withString:@""];
numStr = [numStr stringByReplacingOccurrencesOfString:@"-" withString:@""];
numStr = [numStr stringByReplacingOccurrencesOfString:@" " withString:@""];
}
//如果最后的是11位 就表示符合条件
if (numStr.length == ){
// //将电话号放在可变字符串里边方便作为参数
// if(i ==allPeople.count-1){
// [self.allPhoneNum appendString:[NSString stringWithFormat:@"%@",numStr]];
// }else{
// [self.allPhoneNum appendString:[NSString stringWithFormat:@"%@,",numStr]];}
//
// NSLog(@"self.allPhoneNum:%@",self.allPhoneNum);
//将电话号码存起来
[self.bookdatas addObject:numStr];
}
}
});
然后用bookDatas 在tableview中进行展示就可以了
iOS 获取通讯录里边的电话号码AddressBook的更多相关文章
- ios 获取通讯录的所有信息
iOS获取通讯录全部信息 ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef results = ABAddressBoo ...
- IOS 获取通讯录中信息
获取通讯录中信息 一. 我们设置一个ABAddressBookRef类型的属性addressBook. 二. 要获得通讯录中的信息,我们需要获取访问通讯录的权限. 在运行下面的获取权限的方法的时候,系 ...
- iOS获取通讯录所有联系人信息
以下是2种方式: 第一种方法: GetAddressBook.h #import <Foundation/Foundation.h> @interface GetAddressBook : ...
- iOS 获取通讯录权限的时机
建议将获取通讯录权限的代码放到 -(void)viewDidAppear:(BOOL)animated 或 -(void)viewWillAppear:(BOOL)animated 假如放在 view ...
- iOS获取通讯录 电话号码与姓名
// 还是导入 #import <AddressBook/AddressBook.h> - (void)fetchAddressBookBeforeIOS9{ ABAddressBookR ...
- iOS 获取通讯录中联系人的所有属性 by - zfqj
1 ABAddressBookRef addressBook = ABAddressBookCreate(); 2 3 CFArrayRef results = ABAddressBookCopyAr ...
- iOS有关通讯录操作
一.首先获取用户通讯录授权信息. 在AppDelegate中导入#import <AddressBook/AddressBook.h>框架,在下列方法中获取授权信息. - (BOOL)ap ...
- 利用AddressBook.framework框架获取iOS系统通讯录数据
此方法是使用AddressBook.framework框架获取通讯录信息 第一步.在info.plist文件里面配置访问权限 第二步.导入头文件 #import <AddressBook/Add ...
- React Native之获取通讯录信息并实现类通讯录列表(ios android)
React Native之获取通讯录信息并实现类通讯录列表(ios android) 一,需求分析 1,获取通讯录信息,筛选出通讯录里有多少好友在使用某个应用. 2,获取通讯录信息,实现类通讯录,可拨 ...
随机推荐
- Haskell高阶函数
Haskell functions can take functions as parameters and return functions as return values. A function ...
- 【HDOJ】3592 World Exhibition
基础差分约束. /* 3592 */ #include <iostream> #include <algorithm> #include <queue> #incl ...
- .net framework client profile
.NET Framework Client Profile The .NET Client Profile is a subset of the .NET Framework, which was p ...
- poj3519
凡是差分约束系统的题目都是转化为d[j]-d[i]<=w[i,j]的形式然后我们建立边i-->j 边权为w[i,j]对于这道题,要求d[n]-d[1]尽可能的大设d[i]为相对差,d[1] ...
- Win10开发必备:Visual Studio 2015正式版下载
7月21日凌晨消息,面向大众用户的Visual Studio 2015集成开发工具正式版免费试用版已经推出.本文帮大家汇总一下简体中文社区版.专业版以及企业版在线安装版以及ISO离线安装镜像下载地址. ...
- HDU-4902 Nice boat
Nice boat Time Limit: 30000/15000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- vs未找到导入的项目,请确认 <Import> 声明中的路径正确
当使用vs出现下列情况: D:\xxxx\Web\Web.csproj : error : 无法读取项目文件“Web.csproj”. D:\xxxx\WebServiceManager\Web\W ...
- hdoj 1686 Oulipo【求一个字符串在另一个字符串中出现次数】
Oulipo Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- ADO.NET对象模型
ADO.NET建立在NetFramwork一些核心类的基础之上,可以将这些类分为两组:用于包含于管理数据的容器类与用于连接特定数据源的控制类. 容器类是通用的,无论使用什么样的数据源,都可以使用相同的 ...
- SQL 查询条件放在LEFT OUTER JOIN 的ON语句后与放在WHERE中的区别
这两种条件放置的位置不同很容易让人造成混淆,以致经常查询出莫名其妙的结果出来,特别是副本的条件与主表不匹配时,下面以A,B表为例简单说下我的理解. 首先要明白的是: 跟在ON 后面的条件是对参与左联接 ...